实验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

分析:

 

  1. 是要将使得内存单元的段地址变为当前将要执行指令的段地址,即CS。
  2. 需要将076a:0000~076a:0016的内容复制到0:200中,因此该处填写0016h。

 

经过masm汇编、link链接,并进行debug调试; 到第一次循环仍然使用t命令单步调试,进行追踪

 

 

 

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

 

 

 

 

 

posted @ 2020-11-06 10:25  IvyLeaf  阅读(145)  评论(2)    收藏  举报