|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
实验4 [bx]和loop的使用
(2)编程,向内存0:200~0:23f依次传递数据0~63(3fh),程序中只能使用9条指令,9条指中包括“mov ax,4c00h”和“int 21h”。
assume cs:code
code segment
mov ax,20h
mov ds,ax
mov bx,0
mov cx,40h ;或mov cx,64
s: mov [bx],bl
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
实验4 [bx]和loop的使用
(3)下面的程序功能是将“mov ax,4c00h"之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax, code ;或mov ax, cs
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx, 18h ;或mov cx, 17h ;或sub cx,5
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
此题有多个答案,因为mov用在寄存器之间传送数据的指令是2个字节,用在寄存器和立即数之间是3个字节
答案1:mov ax,cs (占2个字节)
mov cx,17
答案2:mov ax,code (占3个字节)
mov cx,18
这里的循环17次或者18次,是怎么算出来的?
-u
0C79:0000 B82000 MOV AX,0020
0C79:0003 8ED8 MOV DS,AX
0C79:0005 BB0000 MOV BX,0000
0C79:0008 B94000 MOV CX,0040
0C79:000B 881F MOV [BX],BL
0C79:000D 43 INC BX
0C79:000E E2FB LOOP 000B
0C79:0010 B8004C MOV AX,4C00
0C79:0013 CD21 INT 21
0C79:0015 CC INT 3
0C79:0016 FFFF ??? DI
0C79:0018 50 PUSH AX
0C79:0019 8D8600FF LEA AX,[BP+FF00]
0C79:001D 50 PUSH AX
0C79:001E 8D4680 LEA AX,[BP-80]
|
|