-
-
[求助]一段汇编代码的疑惑!
-
发表于:
2008-6-19 14:18
6289
-
最近在看"没有风"的汇编专题,在用DEBUG学习汇编的过程中有下面一段代码不太理解,
请前辈指点,谢谢 :-)
问题描述:比如我输入字符串"123456$",那么下面代码输出的字符串头部会
多一个0x20字符;如果把红色字体部分的代码改为:MOV DX,0118,那么输出就是预期的结果
"123456"! 我用DEBUG命令:D0116看到的数据确实是多了一个0x20字符.
那么0116 DB 20处定义的缓冲区的首址到底是0118还是0116呢?是不是我对DB伪指令理解错了?
输入A100
0100 BA1601 MOV DX,0116 ; 装入缓冲区首址
0103 B40A MOV AH,0A ; INT 21的0A功能
0105 CD21 INT 21 ; 用户输入一个以$结束的字符串
0107 B20A MOV DL,0A ; 输出一个换行码
0109 B402 MOV AH,02 ; INT 21的02功能
010B CD21 INT 21
010D BA1601 MOV DX,0116 ; 装入字符串的起始位置
0110 B409 MOV AH,09 ; INT 21的09功能
0112 CD21 INT 21 ; 输出字符串
0114 CD20 INT 20 ; 退出程序
0116 DB 20 ; 定义缓冲区存放我们输入的字符串
[招生]科锐逆向工程师培训(2024年11月15日实地,远程教学同时开班, 第51期)