- 编程,向内存 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
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
- 下面的程序的功能是将“mov ax,,4c00h”之前的指令复制到内存0:200处,补全程序。上机调试,跟踪运行结果。
assume cs:code
code segment
mov ax,__
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,__
s:mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
提示:
(1)复制的是什么?从哪里到哪里?
(2)复制的是什么?有多少个字节?你如何知道要复制的字节的数量?
使用-u命令显示汇编指令,求出需要复制的机器码字节数。
-u cs:0000
0B65:0000 8CC8 MOV AX,CS
0B65:0002 8ED8 MOV DS,AX
0B65:0004 B82000 MOV AX,0020
0B65:0007 8EC0 MOV ES,AX
0B65:0009 BB0000 MOV BX,0000
0B65:000C B90300 MOV CX,0003
0B65:000F 8A07 MOV AL,[BX]
0B65:0011 26 ES:
0B65:0012 8807 MOV [BX],AL
0B65:0014 43 INC BX
0B65:0015 E2F8 LOOP 000F
0B65:0017 B8004C MOV AX,4C00
0B65:001A CD21 INT 21
assume cs:code
codesg segment
mov ax,cs //CS:IP始终指向执行指令的位置
mov ds,ax //在段地址中存放程序基地址
mov ax,0020h
mov es,ax //段地址产生200h
mov bx,0
mov cx,17h //所占字节数
s: mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
codesg ends
end