程序编写如下:
assume cs:codesg
codesg segment
dw 0123h,0456h,0789h,0abch,0defh,0fedh,0cbah,0987h
start: mov ax,0
mov ds,ax
mov bx,0
mov cx,8
s: mov ax,[bx]
mov cs:[bx],ax
add bx,2
loop s
mov ax,4c00h
int 21h
codesg ends
end start
********************************************
debug测试如下:
C:\DOCUME~1\ADMINI~1>cd c:\masm
C:\MASM>debug c:\example\jcd6d1.exe
-r
AX=0000 BX=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C58 ES=0C58 SS=0C68 CS=0C68 IP=0010 NV UP EI PL NZ NA PO NC
0C68:0010 B80000 MOV AX,0000
-d cs:0 f
0C68:0000 23 01 56 04 89 07 BC 0A-EF 0D ED 0F BA 0C 87 09 #.V.............
-d 0:0 f
0000:0000 68 10 A7 00 8B 01 70 00-16 00 A5 03 8B 01 70 00 h.....p.......p.
-u cs:10 29
0C68:0010 B80000 MOV AX,0000
0C68:0013 8ED8 MOV DS,AX
0C68:0015 BB0000 MOV BX,0000
0C68:0018 B90800 MOV CX,0008
0C68:001B 8B07 MOV AX,[BX]
0C68:001D 2E CS:
0C68:001E 8907 MOV [BX],AX
0C68:0020 83C302 ADD BX,+02
0C68:0023 E2F6 LOOP 001B
0C68:0025 B8004C MOV AX,4C00
0C68:0028 CD21 INT 21
-t
AX=0000 BX=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0C58 ES=0C58 SS=0C68 CS=0C68 IP=0013 NV UP EI PL NZ NA PO NC
0C68:0013 8ED8 MOV DS,AX
-t
AX=0000 BX=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0000 ES=0C58 SS=0C68 CS=0C68 IP=0015 NV UP EI PL NZ NA PO NC
0C68:0015 BB0000 MOV BX,0000
-g 0025
AX=0672 BX=0010 CX=0000 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0000 ES=0C58 SS=0C68 CS=0C68 IP=0025 NV UP EI PL NZ AC PO NC
0C68:0025 B8004C MOV AX,4C00
-d cs:0 f
0C68:0000 68 10 A7 00 BB 13 72 06-16 00 A5 03 B1 13 72 06 h.....r.......r.
*********************
-d 0:0 f (复制前面的内容进行对比)
0000:0000 68 10 A7 00 8B 01 70 00-16 00 A5 03 8B 01 70 00 h.....p.......p.
************************************
程序那个地方出错了?为什么程序不能全部用内存0:0~0:15单元的内容改写程序中的数据。
怎么改啊? |