实验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工具汇编、链接的过程及结果:

实验2 汇编源程序编写与汇编、调试

 

 实验2 汇编源程序编写与汇编、调试

 

 实验2 汇编源程序编写与汇编、调试

 

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

实验2 汇编源程序编写与汇编、调试

 

 用u命令反汇编:

实验2 汇编源程序编写与汇编、调试

 

 用g命令调试:

 

实验2 汇编源程序编写与汇编、调试

 

 结果:实验2 汇编源程序编写与汇编、调试

 

 

 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进行汇编、链接:

实验2 汇编源程序编写与汇编、调试

 

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

实验2 汇编源程序编写与汇编、调试

 

 对ex2.exe进行调试:

t命令单步调试:

实验2 汇编源程序编写与汇编、调试

 

 实验2 汇编源程序编写与汇编、调试

 

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

实验2 汇编源程序编写与汇编、调试

 

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

实验2 汇编源程序编写与汇编、调试

实验2 汇编源程序编写与汇编、调试

 

 结果:

实验2 汇编源程序编写与汇编、调试

 

 实现了同样的功能与效果;但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

 

运行后的结果:

实验2 汇编源程序编写与汇编、调试

 

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

实验2 汇编源程序编写与汇编、调试

 

 

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

实验2 汇编源程序编写与汇编、调试

 

 很明显,字数据高位存放的是字符颜色,低位存放的是字符的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

 

运行结果如下:

实验2 汇编源程序编写与汇编、调试

 

 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, 18h
s:      mov al,[bx]
        mov es:[bx],al
        inc bx
        loop s
        mov ah, 4ch 
        int 21h 
code ends 
end

  运行结果:

实验2 汇编源程序编写与汇编、调试

 

上一篇:【ASM】ASMSNMP用户已存在


下一篇:RHEL 6.x or 7.x 使用分区绑定ASM 磁盘的方法