实验2 汇编源程序编写与汇编、调试
实验2 汇编源程序编写与汇编、调试
一、实验目的
二、实验准备
三、实验内容
1. 实验任务1
1 ;ex1.asm 2 assume cs:code 3 code segment 4 mov ax,0b810h 5 mov ds,ax 6 7 mov byte ptr ds:[0],1 8 mov byte ptr ds:[1],1 9 mov byte ptr ds:[2],2 10 mov byte ptr ds:[3],2 11 mov byte ptr ds:[4],3 12 mov byte ptr ds:[5],3 13 mov byte ptr ds:[6],4 14 mov byte ptr ds:[7],4 15 16 mov ah,4ch 17 int 21h 18 code ends 19 end
结合可执行文件中寄存器CX的值,使用u命令对ex1.exe进行精确反汇编

使用g命令执行到程序退出执行之前(即源码文件中line16之前),观察结果。

内存修改成功,右上角出现图像。
2. 实验任务2
;ex2.asm assume cs:code code segment mov ax,0b810h mov ds,ax mov bx,0 mov ax,101h mov cx,4 s: mov [bx],ax add bx,2 add ax,101h loop s mov ah,4ch int 21h code ends end


t命令单步调试会跳到loop里执行,p命令可以跳出loop循环,结束程序。
ex2.exm的效果:

把ex2.asm中line9 mov cx, 4 改成 mov cx, 8 ,保存后重新汇编、链接、运行并观察结果。

ex2.asm和ex1.asm,他们实现的是相同的效果,在具体的实现上,ex1直接将对应的字节输入地址,ex2利用循环和[bx],将字直接
放入内存中,可以使代码变得简洁。
3. 实验任务3
综合使用loop,[bx],编写完整汇编程序,实现向内存b800:07b8开始的连续16个字单元重复填充字数据0237H。
要求:
-
-
-
- 编写汇编源程序
- 给出运行结果截图
-
-
1 ;ex3.asm 2 assume cs:code 3 code segment 4 mov ax,0b800h 5 mov ds,ax 6 7 mov bx,07b8h 8 mov ax,0237h 9 mov cx,0010h 10 s: mov [bx],ax 11 add bx,2 12 13 loop s 14 mov ah,4ch 15 int 21h 16 code ends 17 end

把填充的字数据,从0237H 改成0239H,再次保存后,汇编、链接、运行,观察结果。

把填充的字数据,从0237H 改成0437H,再次保存后,汇编、链接、运行,观察结果。

猜想:高位字节存放颜色信息,地位字节存放显示内容。
4. 实验任务4
编写完整汇编源程序,实现向内存0:200~0:23F依次传送数据0~63(3FH)。
-
-
-
- 综合使用[bx]和loop,编写汇编源程序
- 灵活使用debug的t命令、g命令、p命令调试。在程序退出前,用d命令查看
- 0:200~0:23F,确认是否将0~3F传送至此段内存区域
-
-
1 ;ex4.asm 2 assume cs:code 3 code segment 4 mov ax,0200h 5 mov ds,ax 6 7 mov bx,0h 8 mov ax,0h 9 mov cx,0040h 10 s: mov [bx],al 11 inc bx 12 inc ax 13 loop s 14 mov ah,4ch 15 int 21h 16 code ends 17 end


5. 实验任务5
1 ;ex5.asm 2 assume cs:code 3 code segment 4 mov ax,cs 5 mov ds,ax 6 mov ax,0020h 7 mov es,ax 8 mov bx,0 9 mov cx,17h 10 s: mov al,[bx] 11 mov es:[bx],al 12 inc bx 13 loop s 14 15 mov ax,4c00h 16 int 21h 17 code ends 18 end

可见代码长度为17h,所以第二空填17h,最后检查存入内存的结果:

(1)复制的是什么?从哪里到哪里?
复制的是代码段的机器码,从0~17H,即mov ax,4c00h。
(2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?
复制的是代码段的机器码,一共23个字节,可以先将cx的值赋0,然后-u精确反汇编,得到代码的长度,再填入cx。
浙公网安备 33010602011771号