zoukankan      html  css  js  c++  java
  • 【8086汇编-Day5】第三次实验

    • 练习一

    结果展示:

    这个程序执行下来貌似打印了数字36,但其实是两个数字3、6;

    这段就是用来打印3;首先ah里放2,跟后面的int 21h结合起来就是调用21号中断例程的2号子程序,用来打印到标准输出。mov dl,3可以理解,我们是想打印数字3,可是事实上并没有那么简单,我们打印字符其实需要的是字符3的ACSII码值即51d 即33h所以在3的基础上add 30h。那么打印6同理。如何让输出与输出有换行呢?

    mov ah,2
    mov dl,0ah
    int 21h

    既然我已经分析的如此清晰了,那我就不改动line 4,line 9了,实际上道理就是这样的,数字本身跟他的十六进制ASCII值形式上刚好差30h,所以add一行不用换,想打印什么数字直接改mov dl的就好了。

    过程:

    查看cx(在这里cx用来表示机器码占用的字节数)可以自己数下反汇编出来的机器码长度

    单步调试,最后调用中断例程退出程序

    • 练习二

    过程:

    改变line7 line 10数据,观察现象

    其实讲到这里就够了,这个汇编程序其实就是在想现存写入数据,哪还记得上一次实验中向显存写入数据实现多种多样的显示么?这里的字符样式、颜色、前景、背景涉及到那些比特位,我在上一篇实验博客里做过补充,在此不再赘述,有兴趣可以参考我上一篇博文,在这里做不同实现。

     

    !!!

    dosbox下这一点确实有点坑,操作数搭配结构不合法的时候,不影响程序执行,在老师指导下在m4w环境下做了实验,意识到错误,如下

    修改后则正常了,如下

  • 相关阅读:
    JavaScript向input标签的value赋值
    thinkphp关于本地引用图片
    jquery中得到input的值
    HTML的video标签,不能下载视频代码
    PHP数据库类
    MySQL数据库之MyISAM与InnoDB的区别
    php函数ob_start(),解决header输出头报错问题
    eps图片中文乱码问题
    感悟----程序员需要养成的习惯
    <前m大的数>的妙解
  • 原文地址:https://www.cnblogs.com/hackmylife/p/9889139.html
Copyright © 2011-2022 走看看