实验2 汇编源程序编写与汇编、调试
1. 实验任务1
使用任意一款文本编辑器,编写8086汇编源程序ex1.asm。源代码如下:
assume cs:code code segment mov ax, 0b810h mov ds, ax mov byte ptr ds:[0], 1 mov byte ptr ds:[1], 1 mov byte ptr ds:[2], 2 mov byte ptr ds:[3], 2 mov byte ptr ds:[4], 3 mov byte ptr ds:[5], 3 mov byte ptr ds:[6], 4 mov byte ptr ds:[7], 4 mov ah, 4ch int 21h code ends end
masm:

link:

运行(任务一因为在机房电脑直接通过系统的debug做的,没有通过DOS,所以可以得出结果):

debug以及u命令:

查看PSP的命令及截图 :

g命令:

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
编译、连接、运行:

debug调试以及反汇编:

t命令:


结果:

发现与实验一的实验结果相同;其实两者只是实现方式不同而已,实验二通过loop循环完成了实验一的任务;
3、实验三
源代码:
assume cs:code code segment mov ax,0b800h mov ds,ax mov bx,07b8h mov cx,000fh s: mov [bx],0437h inc bx inc bx loop s mov ax,4c00h int 21h code ends end
运行结果:

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

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

猜测并分析,这个字数据中高位字节里存放的是什么信息,低位字节里存放的是什么信息。
答:0237->0239:颜色不变,数据改变;0237->0437:颜色改变,数据不变;由此得高位字节里存放颜色信息,低位字节里存放数据信息。
4、实验四
编写完整汇编源程序,实现向内存0:200~0:23F依次传送数据0~63(3FH)。
代码如下:
assume cs:code code segment mov ax,20h mov ds,ax mov cx,40h mov bx,00h s: mov [bx],bx inc bx loop s mov ax,4c00h int 21h code ends end
运行以及u命令:

p命令、t命令:

d命令:

5、实验五
补全代码后:
assume cs:code code segment mov ax,cs mov ds,ax mov ax,0020h mov es,ax mov bx,0 mov cx,17h s: mov al,[bx] mov es:[bx],al inc bx loop s mov ax,4c00h int 21h code ends end
分析:
- 是要将使得内存单元的段地址变为当前将要执行指令的段地址,即CS。
-
需要将076a:0000~076a:0016的内容复制到0:200中,因此该处填写0016h。
经过masm汇编、link链接,并进行debug调试; 到第一次循环仍然使用t命令单步调试,进行追踪:



p命令后g命令,程序正常终止:


浙公网安备 33010602011771号