汇编实验四

汇编语言循环填充与数据传送实践

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还是挺难的,有些之前学的也是没学清楚,希望自己能学得清楚吧。

 

转载于:https://www.cnblogs.com/heyha/p/9985366.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值