《汇编语言》实验四课程

(1) 综合使用 loop,[bx],编写完整汇编程序,实现向内存 b800:07b8 开始的连续 16 个 字单元重复填充字数据 0403H。

代码:

assume cs:code
code segment
mov ax,0b800h
mov ds,ax
mov bx,07b8h
mov cx,16
s: mov [bx],0403h
add bx,2
loop s

mov ax,4c00h
int 21h
code ends
end

 截图:

 

 将源代码程序中字数据 0403H→修改为 0441H,再次运行,截图显示运行结果:

 

(2)编程:向内存0:200~0:23F依次传送数据0~63(3FH),程序中只能使用9条指令,9条指令中包括“mov  ax,4c00h”和“int 21h”

代码:

assume cs:code

code segment

   mov ax,0020h

   mov ds,ax

   mov bx,0

   mov cx,64

s:mov [bx],bx                                                            ;此处直接将bx=0传入0020:0,并通过循环使得bx传入内存

   inc bx

   loop s

code ends

end

截图:

实验内容三:

下面的程序的功能是将”mov ax,4c00h"之前的指令复制到内存0:200处,补全程序,上机调试,跟踪运行结果 

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.cx的值是loop循环的次数,而程序段的长度决定了循环写入的次数,所以cx的值为程序段的长度。

用r命令查看一开始cx的值,再用u命令反汇编

可见当程序段结束时,即“mov ax,4c00h”时偏移地址为17,即程序段长度为17,所以cx=17

 将cx改为17后,t命令逐步调试

 

复制成功

猜你喜欢

转载自www.cnblogs.com/zwHou/p/10117078.html