(1)&(2):
不解释,直接上代码!
ASSUME CS:CODE
CODE SEGMENT
MOV AX,20H
MOV DS,AX
MOV BX,0
MOV CX,3FH
S: MOV [BX],BX
INC BX
LOOP S
MOV AH,4CH
INT 21H
CODE ENDS
END
(3)
可以看出,在程序装入内存后,CX值为001CH(H表示16进制数),题目要求复制 MOV AX,4C00H 之前的指令,MOV AX,4C00H及 INT 21H 占用总字节为0005H(001CH-0016H),用 001CH-0005H 即为所求代码长度 0017H ,故代码应更改如下:
ASSUME CS:CODE
CODE SEGMENT
MOV AX,CS ;cs为程序入口的段地址,我们就是要从这里开始复制
MOV DS,AX
MOV AX,0020H
MOV ES,AX
MOV BX,0
SUB CX,0005H ;或者 MOV CX,0017H
S: MOV AL,[BX]
MOV ES:[BX],AL
INC BX
LOOP S
MOV AX,4C00H
INT 21H
CODE ENDS
END