实验2 汇编源程序编写与汇编、调试
一、实验目的
1. 理解并掌握汇编源程序组成与结构
2. 掌握汇编语言源程序编写→汇编→链接→调试的工具和方法
3. 理解汇编源程序中地址表示、段寄存器的用法
4. 理解和掌握寄存器间接寻址方式[bx]
5. 通过汇编指令loop的使用理解编程语言中循环的本质
二、实验准备
1. 学习/复习第5章使用[bx]和loop实现循环的编程应用示例(教材5.5节,5.8节)
2. 复习第3章「栈」的知识
3. 结合第4章课件,复习完整汇编源程序编写→汇编→连接→运行→调试的方法
4. 复习8086汇编中内存单元地址的表示,以及段寄存器DS, SS, ES, CS的用途
三、实验结论
1. 实验任务1
ex1.asm源代码如下:
;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工具汇编、链接的过程及结果:



使用d命令查看程序段前缀PSP所占的256个字节:

用u命令反汇编:

用g命令调试:

结果:
2.试验任务2
ex2.asm程序如下:
; ex2.asm
assume cs:code
code segment
mov ax, 0b810h
mov ds, ax
mov bx, 0
mov ax, 101H
mov cx, 8
s: mov [bx], ax
add bx, 2
add ax, 101H
loop s
mov ah, 4ch
int 21h
code ends
end
使用masm、link对ex2.asm进行汇编、链接:

使用u命令对ex2.exe进行反汇编:

对ex2.exe进行调试:
t命令单步调试:


p命令单步调试:(循环中的命令不单步执行)

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


结果:

实现了同样的功能与效果;但ex1为顺序结构,ex2为循环结构,效率上前者更好,但使用循环结构更方便书写。
3.实验任务3
ex3.asm的源代码:
; ex3.asm
assume cs:code
code segment
mov ax, 0b800h
mov ds, ax
mov bx, 07b8h
mov ax, 0437H
mov cx, 16
s: mov [bx], ax
add bx, 2
loop s
mov ah, 4ch
int 21h
code ends
end
运行后的结果:

把填充的字数据,从0237H 改成0239H的结果:

把填充的字数据,从0237H 改成0437H的结果:

很明显,字数据高位存放的是字符颜色,低位存放的是字符的ASCII码
4.试验任务4
ex4.asm代码如下:
; ex4.asm
assume cs:code
code segment
mov ax, 0
mov ds, ax
mov bx, 200h
mov ax, 0
mov cx, 64
s: mov [bx], ax
add bx, 1
add ax,1
loop s
mov ah, 4ch
int 21h
code ends
end
运行结果如下:

5.实验任务5
ex5.asm代码:
; ex4.asm
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 ah, 4ch
int 21h
code ends
end
反汇编结果:

运行结果:


浙公网安备 33010602011771号