汇编实验四

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

结果截图:

 

2. 综合使用 loop,[bx],编写完整汇编源程序,实现向内存 0:200~0:23F 依次传送数据 0~63(3FH)。

代码:

assume cs:code
code segment
mov ax,0
mov ds,ax
mov bx,200h
mov cx,64
s:mov [bx],al
inc bx
inc al
loop s
mov ax,4c00h
int 21h
code ends
end

 

debug调试:

3.书上p121

题目

第一个空:mov ax,cs

第二个空:mov cx,17h

代码:

assume cs:code
code segment
mov ax,cs
mov ds,ax
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的值送入AX中,是因为这段程序就是从CS中的值指向的段地址开始的。根据题意,是要将一开始CS:IP所指向的内存地址到mov ax,4c00h前CS:IP所指向的内存地址 中的值复制到从内存地址为0:200处开始的内存单元处。故而此时ds=cs。

(2)第二空,即判断要循环多少次,需判断在mov ax,4c00h之前有多少条指令,而cx中的值为整个程序的长度,只要将总长度减去mov ax,4c00h和int 21h的长度即可。在这里我先让cx=1,查看程序总共的长度。

总结:感觉loop还是挺难的,有些之前学的也是没学清楚,希望自己能学得清楚吧。

 

posted on 2018-11-19 20:51  宠溺  阅读(93)  评论(1编辑  收藏  举报

导航