森林de雨 发表于 2020-5-7 12:03:56

D 200 20F 18A2:0200 的最后的43 43 83 06 xV4...Ce!.wwCC..什么意思啊

Code SEGMENT
      ASSUME CS:code,DS:code
      ORG 100H            ;从100H处开始存放下列指令
Start:MOV AX,code         ;将DS置成code段的首地址
      MOV DS,AX
      MOV SI,200H         ;取第一个数的首地址
      MOV AX,         ;将第一个数的低16位取到AX
      MOV DI,204H         ;取第二个数的首地址
      ADD AX,         ;第一个数和第二个数的低16应相加
      MOV ,AX       ;低16位相加的结果送到208H和209H单元
      MOV AX,       ;取第一个数的高16位送到AX中
      ADD AX,       ;两个数的高16位相加
      MOV ,AX   ;高16位相加的结果送到20AH,20BH单元
      MOV AX,4C00H      ;使用DOS的4CH号功能调用
      INT 21H             ;进入功能调用,返回DOS
      ORG 200H            ;从200H处开始存放下列数据
      DD 12345678h,654387A9h,0h ;被加数、加数、和
Code ENDS
    END start

调试过程:
① 进入Debug并装入可执行文件HB.EXE
D:\MASM>Debug HB.EXE
-
② 观察寄存器初始状态
-R
AX=0000BX=0000CX=020CDX=0000SP=0000BP=0000SI=0000DI=0000
DS=1892ES=1892SS=18A2CS=18A2IP=0100   NV UP EI PL NZ NA PO NC
18A2:0100 B8A218      MOV   AX,18A2
③ 以单步工作方式开始运行程序
-T
AX=18A2BX=0000CX=020CDX=0000SP=0000BP=0000SI=0000DI=0000
DS=1892ES=1892SS=18A2CS=18A2IP=0103   NV UP EI PL NZ NA PO NC
18A2:0103 8ED8          MOV   DS,AX
-T
AX=18A2BX=0000CX=020CDX=0000SP=0000BP=0000SI=0000DI=0000
DS=18A2ES=1892SS=18A2CS=18A2IP=0105   NV UP EI PL NZ NA PO NC
18A2:0105 BE0002      MOV   SI,0200
④ 观察用户程序数据段初始内容(D 地址)
-D 200 20F
18A2:020078 56 34 12 A9 87 43 65-00 00 00 00 00 74 13 50   xV4...Ce.....t.P
-
⑤ 连续工作方式运行程序至返回DOS前(设断点),查看运行结果。为此,现使用U命令反汇编。(U 地址)
-U 100
18A2:0100 B8A218      MOV   AX,18A2
18A2:0103 8ED8          MOV   DS,AX
18A2:0105 BE0002      MOV   SI,0200
18A2:0108 8B04          MOV   AX,
18A2:010A BF0402      MOV   DI,0204
18A2:010D 0305          ADD   AX,
18A2:010F 894408      MOV   ,AX
18A2:0112 8B4402      MOV   AX,
18A2:0115 034502      ADD   AX,
18A2:0118 89440A      MOV   ,AX
18A2:011B B8004C      MOV   AX,4C00
18A2:011E CD21          INT   21
-
可见,要执行10条指令,至011B处停止(=地址)
-G=100,011B
AX=7777BX=0000CX=020CDX=0000SP=0000BP=0000SI=0200DI=0204
DS=18A2ES=1892SS=18A2CS=18A2IP=011B   NV UP EI PL NZ NA PE NC
18A2:011B B8004C      MOV   AX,4C00
-D 200 20F
18A2:020078 56 34 12 A9 87 43 65-21 DE 77 77 43 43 83 06   xV4...Ce!.wwCC..

上善若水··· 发表于 2020-5-11 17:42:43

18A2:020078 56 34 12 A9 87 43 65-21 DE 77 77 43 43 83 06   xV4...Ce!.wwCC..

前面的为数据0x78 , 0x56 ....
在ascii码表中对应的就是 xV... 这样的数据,就是以字符显示了而已

xie1234abc 发表于 2020-5-15 12:08:40

本帖最后由 xie1234abc 于 2020-5-15 13:57 编辑

D 200 20F 18A2:0200 的最后的43 43 83 06 xV4...Ce!.wwCC..什么意思啊?
答:43 43 83 06是别的程序的内存
      “xV4...Ce!.wwCC..”是18A2:0200~18A2:020F 对应的ASCII码
另外,你那程序会出错,低位相加时进位被丢失了。
如果,将被加数和加数改成这样,1234ABCDh,6543FEDCh。
结果将出错,你可以似下,用adc指令可解决这个问题。
望采纳!

xie1234abc 发表于 2020-5-17 08:21:13

关于这个程序的更改做出来了吗,做出来了就不用回此消息了。
页: [1]
查看完整版本: D 200 20F 18A2:0200 的最后的43 43 83 06 xV4...Ce!.wwCC..什么意思啊