第三题,填空
assume cs:code
code segment
mov ax,cs ;ax,填空
mov ds,ax
mov ax,0020h
mov es,ax
mov bx,0
mov cx,17h ;cx,填空
s:
mov al,[bx]
mov es:[bx],al
inc bx
loop s
mov ax,4c00h
int 21h
code ends
end
由于要将当前代码复制到0:200处,所以要得到当前代码载入后的地址,由于程序载入的地址于系统环境有关,是一个不定值,则第一个空肯定填写cs,cs即代码段载入内存的段地址,第一条指令的偏移为0。
测试时候讲cx设置为零,debug加载(下图)
由图可知:CX=001C --0B49:001C CC INT 3即int 21的下一条指令.
根据题意,赋值mov ax,4c00h前的代码,
0B49:0017 B8004C MOV AX,4C00
也就是说赋值0B49:000~0B49:0016的代码,即cx=17h
试验结果:
-u
0B49:0000 8CC8 MOV AX,CS
0B49:0002 8ED8 MOV DS,AX
0B49:0004 B82000 MOV AX,0020
0B49:0007 8EC0 MOV ES,AX
0B49:0009 BB0000 MOV BX,0000
0B49:000C B91900 MOV CX,0000
0B49:000F 8A07 MOV AL,[BX]
0B49:0011 26 ES:
0B49:0012 8807 MOV [BX],AL
0B49:0014 43 INC BX
0B49:0015 E2F8 LOOP 000F
0B49:0017 B8004C MOV AX,4C00
0B49:001A CD21 INT 21
0B49:001C CC INT 3
0B49:001D 50 PUSH AX
0B49:001E E8B760 CALL 60D8
-r
AX=0000 BX=0000 CX=001C DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B39 ES=0B39 SS=0B49 CS=0B49 IP=0000 NV UP EI PL NZ NA PO NC
0B49:0000 8CC8 MOV AX,CS |