- 论坛徽章:
- 0
|
第五章 实验4
|------------------------------ C:\STUDY\T3.ASM -------------------------------|
|assume cs:codeseg
|codeseg segment
| mov ax,cs
| mov ds,ax
| mov ax,20h
| mov es,ax
| mov bx,0
| mov cx,cx
| s:mov al,ds:[bx]
| mov es:[bx],al
| inc bx
| loop s
| mov ax,4c00h
| int 21h
|codeseg ends
|end
疑问在于cx记录全长,上面的代码理应完成的是复制整个程序,包括mov ax,4c00h 和 int 21h
但恰恰完成题目要求. 这是为什么?
-r
AX=00F8 BX=0015 CX=0006 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1EDF ES=0020 SS=1EDF CS=1EDF IP=0010 NV UP EI PL NZ NA PO NC
1EDF:0010 26 ES:
1EDF:0011 8807 MOV [BX],AL ES:0015=FF
-u es:0 1b
0020:0000 8CC8 MOV AX,CS
0020:0002 8ED8 MOV DS,AX
0020:0004 B82000 MOV AX,0020
0020:0007 8EC0 MOV ES,AX
0020:0009 BB0000 MOV BX,0000
0020:000C 8BC9 MOV CX,CX
0020:000E 8A07 MOV AL,[BX]
0020:0010 26 ES:
0020:0011 8807 MOV [BX],AL
0020:0013 43 INC BX
0020:0014 E2FF LOOP 0015
0020:0016 00F0 ADD AL,DH
0020:0018 53 PUSH BX
0020:0019 FF00 INC WORD PTR [BX+SI]
0020:001B F0 LOCK
0020:001C 53 PUSH BX
-t
AX=00F8 BX=0015 CX=0006 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1EDF ES=0020 SS=1EDF CS=1EDF IP=0013 NV UP EI PL NZ NA PO NC
1EDF:0013 43 INC BX
-u es:13 1b
0020:0013 43 INC BX
0020:0014 E2F8 LOOP 000E
0020:0016 00F0 ADD AL,DH
0020:0018 53 PUSH BX
0020:0019 FF00 INC WORD PTR [BX+SI]
0020:001B F0 LOCK
0020:001C 53 PUSH BX
-t
AX=00F8 BX=0016 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1EDF ES=0020 SS=1EDF CS=1EDF IP=000E NV UP EI PL NZ NA PO NC
1EDF:000E 8A07 MOV AL,[BX] DS:0016=B8
-t
AX=00B8 BX=0016 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1EDF ES=0020 SS=1EDF CS=1EDF IP=0010 NV UP EI PL NZ NA PO NC
1EDF:0010 26 ES:
1EDF:0011 8807 MOV [BX],AL ES:0016=00
-t
AX=00B8 BX=0016 CX=0005 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1EDF ES=0020 SS=1EDF CS=1EDF IP=0013 NV UP EI PL NZ NA PO NC
1EDF:0013 43 INC BX
-u es:13 1b
0020:0013 43 INC BX
0020:0014 E2F8 LOOP 000E
0020:0016 B8F053 MOV AX,53F0
0020:0019 FF00 INC WORD PTR [BX+SI]
0020:001B F0 LOCK
0020:001C 53 PUSH BX
-
-p
AX=0021 BX=001B CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=1EDF ES=0020 SS=1EDF CS=1EDF IP=0016 NV UP EI PL NZ NA PE NC
1EDF:0016 B8004C MOV AX,4C00
-u es:0 1c
0020:0000 8CC8 MOV AX,CS
0020:0002 8ED8 MOV DS,AX
0020:0004 B82000 MOV AX,0020
0020:0007 8EC0 MOV ES,AX
0020:0009 BB0000 MOV BX,0000
0020:000C 8BC9 MOV CX,CX
0020:000E 8A07 MOV AL,[BX]
0020:0010 26 ES:
0020:0011 8807 MOV [BX],AL
0020:0013 43 INC BX
0020:0014 E2F8 LOOP 000E
0020:0016 B8004C MOV AX,4C00
0020:0019 CD21 INT 21
0020:001B F0 LOCK
0020:001C 53 PUSH BX
-
可见确实复制了整个程序
但是很奇怪的是有一次又确实只是复制到020:0016为止 怎么回事? 以后再没发生
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/13779/showart_300432.html |
|