帮忙看个程序

dongjiutiao 2009-12-03 02:18:47
DATA SEGMENT
ORG 1000H
BIN DB ?
HEX DB '6B'
ORG 1030H
DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
ORG 1041H
DB 0AH,0BH,0CH,0DH,0EH,0FH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START: MOV AX,DATA
MOV DS,AX
MOV AL,HEX
MOV BX,OFFSET BIN
SUB AH,AH
ADD BX,AX
MOV DL,[BX]
MOV CL,4
SHL CL,4
MOV AL,HEX+1
MOV BX,OFFSET BIN
XOR AH,AH
ADD BX,AX
MOV AL,DL
OR AL,DL
MOV BIN,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START


MOV AL,HEX+1怎么就是42了??
SHL CL,4中的CL是什么?
DB 0AH,0BH,0CH,0DH,0EH,0FH有什么用?
...全文
123 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
friendly_ 2009-12-03
  • 打赏
  • 举报
回复
HEX DB '6B' HEX 定义的是byte类型,所以HEX指向'6'这一byte,HEX+1指向'B'这一字节。
dongjiutiao 2009-12-03
  • 打赏
  • 举报
回复
"这行代码是取HEX的下一单元数据,既'B',所以是42H。"

6B的下一单元是6A和6C啊,42是大写B
BAYNPU 2009-12-03
  • 打赏
  • 举报
回复
0000 DATA SEGMENT
ORG 1000H
1000 00 BIN DB ?
1001 36 42HEX DB '6B' HEX+1就是42了.
ORG 1030H
1030 00 01 02 03 04 05 DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
06 07 08 09
ORG 1041H
1041 0A 0B 0C 0D 0E 0F DB 0AH,0BH,0CH,0DH,0EH,0FH
1047 DATA ENDS
SHL CL,4 这条移位的次数也不对,要么CL位要么1位。







cnzdgs 2009-12-03
  • 打赏
  • 举报
回复
HEX下面的数据与HEX没有关系,下面的数据是一张表,只使用了30H~39H和41H~46H两段空间,其它空间用不到,所以可以定义其它变量使用。
CL是CX寄存器的低8位。在8086指令集中,移位操作的位数只能是1或者CL。
dongjiutiao 2009-12-03
  • 打赏
  • 举报
回复
对照ASCLL看了一遍还是不明白啊。还有CL好像不是寄存器吧
dongjiutiao 2009-12-03
  • 打赏
  • 举报
回复
HEX DB '6B'
ORG 1030H
DB 00H,01H,02H,03H,04H,05H,06H,07H,08H,09H
ORG 1041H
DB 0AH,0BH,0CH,0DH,0EH,0FH

HEX下面的数值都被定义到HEX了吗?
cnzdgs 2009-12-03
  • 打赏
  • 举报
回复
这段代码看起来是要把一个用ASCII码表示的两位十六进制数转换为数值,不过程序没有写对,而且代码质量较低。

MOV AL,HEX+1怎么就是42了??
这行代码是取HEX的下一单元数据,既'B',所以是42H。

SHL CL,4中的CL是什么?
这行代码写错了,应该是shl dl,cl。

DB 0AH,0BH,0CH,0DH,0EH,0FH有什么用?
这是程序定义的转换表的一部分,ACSII码41H~46H对应十六进制的A~F。

21,499

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧