码迷,mamicode.com
首页 > 编程语言 > 详细

汇编语言实验 3 编程、编译、连接、跟踪

时间:2018-10-28 14:08:11      阅读:216      评论:0      收藏:0      [点我收藏+]

标签:编写   font   span   前缀   符号   部分   关系   语言   lin   

实验内容

(1)第1步,编写汇编源程序t1.asm, 源程序代码如下:

  assume cs:code

  code segment

        mov ah,2

        mov dl,3

        add dl,30h

        int 21h

        mov ah,2

        mov dl,6

        add dl,30h

        int 21h

           mov ah,4ch

        int 21h

code ends

end

技术分享图片

因为对汇编语言的一系列还不熟练,所以花了点时间,终于进去了。

技术分享图片

 

 技术分享图片

技术分享图片

 

对源程序 t1.asm 进行汇编、连接、运行、调试 

(1) 运行程序,观察程序输出结果是什么?

输出结果为36

(2) 将 line4和line9种寄存器dl 的值分别修改为 0~9 中任何一个数字,重新汇编→ 连接→运行,观察结果的变化。  

我将line4中的值改为1,line9中的值改为4,

技术分享图片

 

(3) 用debug对生成的可执行文件 t1.exe 进行调试。

① 使用 r 命令查看。观察寄存器 cx 的值是 多少;观察寄存器 ds 和 cs 的值是多 少,它们之间是否满足关系(cs)=(ds)+10H? 

技术分享图片

cx为0016H,cs为076A,ds为075A,符合关系(cs)=(ds)+10H。

② PSP(程序段前缀)的头两个字节是CD 20, 用debug查看PSP的内容,验证是否 如此。

 技术分享图片

的确如此

③ 使用 u 命令对 t1.exe 进行反汇编,观察反汇编得到的源代码。

技术分享图片

反汇编得到的如图所示

④ 使用 t 命令和 p 命令(遇到 int 命令时,用 p 命令)单步调试,观察结果。 

 技术分享图片

 出现了3

 技术分享图片

出现了6

组成了最后t1.exe的36。

 (2)第1步,编写汇编源程序t2.asm,源程序代码如下

assume cs:code

code segment

    mov ax,0b800h

    mov ds,ax

 

    mov bx,0

    mov [bx],0433h

 

       add bx,2

    mov [bx],0436h

    mov ax,4c00h

    int 21h

code ends

end

技术分享图片

第2步,对源程序 t2.asm 进行汇编、连接、运行、调试

(1) 对t2.asm进行汇编、连接后,得到可执行文件t2.exe。运行t2.exe,观察程序运行 结果,验证是否在屏幕左上方出现红色的数值36

技术分享图片

经过cls之后,重新输入t2,出现了目标结果

(2) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0432h, line10 的 0436h→0439h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。

技术分享图片

修改成功

技术分享图片

 

 出现了红色的29

(3) 如果(1)结果得到验证,重新打开t2.asm,尝试将源代码中line7的0433h→0333h, line10 的 0436h→0336h, 然后重新汇编、连接,得到可执行文件 t2.exe。使用 cls 命令清 屏后,再次观察程序运行结果。 

 技术分享图片

修改成功

技术分享图片

出现了蓝色的36

这个发现和之前的实验一最后一部分类似。

实验一向内存从B8100H开始的单元中填写数据,每一次填写的数据不一样会出现不同的表情符号,而这次编写代码0433h举例来说,mov这个操作,043三个字节决定了颜色的不同,最后一个字节决定了输出的内容。而【】符号似乎就是颜色的填充工具。

分析这次两个练习输出的不同

    mov ax,0b800h                    mov ah,2

    mov ds,ax                            mov dl,3

    mov bx,0                             add dl,30h

    mov [bx],0433h                   mov ah,2

       add bx,2                             mov dl,6

    mov [bx],0436h                   add dl,30h

第一次有一项add dl,30h即将数字转换为相对应的ASCII码打印出来,这个实验通过8位寄存器实现,而第二次是通过16位寄存器,直接输出。

 实验总结

通过这次实验,我知道了一个完整汇编程序的输入输出的流程,学会了对于数字颜色的把控,以及两种输出的格式。

 

     

 

汇编语言实验 3 编程、编译、连接、跟踪

标签:编写   font   span   前缀   符号   部分   关系   语言   lin   

原文地址:https://www.cnblogs.com/-Cold/p/9865351.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!