一、实验目的
二、实验准备
三、实验结论
1.实验任务1
(1)给出ex1.asm源代码:
1 ;ex1.asm 2 assume cs:code 3 code segment 4 mov ax, 0b810h 5 mov ds, ax 6 mov byte ptr ds:[0], 1 7 mov byte ptr ds:[1], 1 8 mov byte ptr ds:[2], 2 9 mov byte ptr ds:[3], 2 10 mov byte ptr ds:[4], 3 11 mov byte ptr ds:[5], 3 12 mov byte ptr ds:[6], 4 13 mov byte ptr ds:[7], 4 14 mov ah, 4ch 15 int 21h 16 code ends 17 end
(2)给出使用masm、link工具汇编、链接的命令行及运行结果截图
(3) 给出使用debug调试的截图
1)查看PSP的命令
2)使用u命令精确进行反汇编
3)使用g命令执行到line16退出执行之前
2.实验任务2
(1) 给出ex2.asm源代码
1 ; ex2.asm 2 assume cs:code 3 code segment 4 mov ax, 0b810h 5 mov ds, ax 6 mov bx, 0 7 mov ax, 101H 8 mov cx, 4 9 s: mov [bx], ax 10 add bx, 2 11 add ax, 101H 12 loop s 13 mov ah, 4ch 14 int 21h 15 code ends 16 end
(2)给出使用masm、link工具汇编、链接的命令行及结果截图
(3)使用debug调试
1)使用u命令精确进行反汇编
2)灵活使用t命令、p命令、g命令,对ex2.exe进行调试
3)把ex2.asm中line9 mov cx,4改成 mov cx,8, 保存后重新汇编、链接、运行并观察结果。
(4)回答问题:
ex2.asm和ex1.asm实现相同的功能,都出现了相同的图案。(修改后的ex2.asm,实现的图案不同.)
ex2.asm使用了loop循环,而ex1.asm没有。
3.实验任务3
(1)给出ex3.asm源代码
1 ;ex3.asm 2 assume cs:code 3 code segment 4 mov ax,0b800h 5 mov ds,ax 6 mov bx,07b8h 7 mov ax,0237h 8 mov cx,16 9 s: mov [bx],ax 10 add bx,2 11 loop s 12 mov ah,4ch 13 int 21h 14 code ends 15 end
(2)给出运行结果截图
(3)基于以下实验操作的发现和文字说明。
1)把填充的字数据,从0237H改成0239H,再次保存后,汇编、链接、运行,观察结果。
2)把填充的字数据,从0237H改成0437H,再次保存后,汇编、链接、运行,观察结果。
3)猜测与分析,这个字数据中高位字节里存放的是什么信息,低位字节里存放的是什么信息。
第一次高位字节不变,改变低位字节,结果显示颜色不变,显示的内容改变;
第二次改变高位字节,低位字节不变,结果显示颜色改变,显示的内容不变。
可知,高位字节里存放的是颜色信息,低位字节里存放的是内容信息。
4.实验任务4
(1)综合使用[bx]和loop,给出ex4.asm源代码
1 ;ex4.asm 2 assume cs:code 3 code segment 4 mov ax,0h 5 mov ds,ax 6 mov bx,0200h 7 mov cx,40h 8 s: mov [bx],ax 9 add bx,1h 10 add ax,1h 11 loop s 12 mov ah,4ch 13 int 21h 14 code ends 15 end
(2)汇编、链接无误后,灵活使用debug的t命令、g命令、p命令调试,用d命令查看0:200~0:23F,确认是否将0~63传送至此段内存区域。
5.实验任务5
下面的程序的功能是将“mov ax,4c00h”之前的指令复制到内存0:200处。
(1)填空ex5.asm源代码
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, 0017H 10 s: mov al, [bx] 11 mov es:[bx], al 12 inc bx 13 loop s 14 mov ax, 4c00H 15 int 21h 16 code ends 17 end
(2)汇编连接后,灵活使用debug的t命令、g命令、p命令调试,用d命令查看0:200之后的若干字节,观察是否将mov ax,4c00h之前的指令复制到指定内存。
mov ax,4c00h之前的指令复制到指定内存。
填写依据:
1.根据题目要求是复制汇编指令,到指定内存,所以应将汇编语句的保存段地址cs给ds。
2.loop指令的循环中每次复制一个字节的数据,先随便填入cx值,debug时进入利用r命令查看程序所占字节数,然后可知cx的值为17。
四、实验总结
1.在调试过程中,遇到不知道p命令和t命令区别的问题,通过查阅可知p命令类似t命令,不过遇到子程序调用的时候直接执行完子程序代码,不会进入子程序逐条执行。在遇到循环指令时,会直接执行到CX=0。
2.通过本次的实验,自己动手操作完成,能够熟悉并掌握完整汇编源程序编写→汇编→连接→运行→调试的方法。