鱼C论坛

 找回密码
 立即注册
查看: 3049|回复: 3

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

[复制链接]
发表于 2020-5-7 12:03:56 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

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

  20. 调试过程:
  21. ① 进入Debug并装入可执行文件HB.EXE
  22. D:\MASM>Debug HB.EXE
  23. -
  24. ② 观察寄存器初始状态
  25. -R
  26. AX=0000  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
  27. DS=1892  ES=1892  SS=18A2  CS=18A2  IP=0100   NV UP EI PL NZ NA PO NC
  28. 18A2:0100 B8A218        MOV     AX,18A2
  29. ③ 以单步工作方式开始运行程序
  30. -T
  31. AX=18A2  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
  32. DS=1892  ES=1892  SS=18A2  CS=18A2  IP=0103   NV UP EI PL NZ NA PO NC
  33. 18A2:0103 8ED8          MOV     DS,AX
  34. -T
  35. AX=18A2  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0000  DI=0000
  36. DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=0105   NV UP EI PL NZ NA PO NC
  37. 18A2:0105 BE0002        MOV     SI,0200
  38. ④ 观察用户程序数据段初始内容(D 地址)
  39. -D 200 20F
  40. 18A2:0200  78 56 34 12 A9 87 43 65-00 00 00 00 00 74 13 50   xV4...Ce.....t.P
  41. -
  42. ⑤ 连续工作方式运行程序至返回DOS前(设断点),查看运行结果。为此,现使用U命令反汇编。(U 地址)
  43. -U 100
  44. 18A2:0100 B8A218        MOV     AX,18A2
  45. 18A2:0103 8ED8          MOV     DS,AX
  46. 18A2:0105 BE0002        MOV     SI,0200
  47. 18A2:0108 8B04          MOV     AX,[SI]
  48. 18A2:010A BF0402        MOV     DI,0204
  49. 18A2:010D 0305          ADD     AX,[DI]
  50. 18A2:010F 894408        MOV     [SI+08],AX
  51. 18A2:0112 8B4402        MOV     AX,[SI+02]
  52. 18A2:0115 034502        ADD     AX,[DI+02]
  53. 18A2:0118 89440A        MOV     [SI+0A],AX
  54. 18A2:011B B8004C        MOV     AX,4C00
  55. 18A2:011E CD21          INT     21
  56. -
  57. 可见,要执行10条指令,至011B处停止(=地址)
  58. -G=100,011B
  59. AX=7777  BX=0000  CX=020C  DX=0000  SP=0000  BP=0000  SI=0200  DI=0204
  60. DS=18A2  ES=1892  SS=18A2  CS=18A2  IP=011B   NV UP EI PL NZ NA PE NC
  61. 18A2:011B B8004C        MOV     AX,4C00
  62. -D 200 20F
  63. 18A2:0200  78 56 34 12 A9 87 43 65-21 DE 77 77 43 43 83 06   xV4...Ce!.wwCC..

复制代码
最佳答案
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指令可解决这个问题。
望采纳!
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2020-5-11 17:42:43 | 显示全部楼层
18A2:0200  78 56 34 12 A9 87 43 65-21 DE 77 77 43 43 83 06   xV4...Ce!.wwCC..

前面的为数据0x78 , 0x56 ....
在ascii码表中对应的就是 xV... 这样的数据,就是以字符显示了而已
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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指令可解决这个问题。
望采纳!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-5-17 08:21:13 | 显示全部楼层
关于这个程序的更改做出来了吗,做出来了就不用回此消息了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-6-9 09:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表