主题:把一个十六进制数转换为对应的ASCII程序!
小微
[专家分:0] 发布于 2005-09-23 17:53:00
DATA SEGMENT
XX DB 4
ASCII DB ?
DATA ENDS
;
CODE SEGMENT
ASSUEM CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,XX
AND AL,0FH
CMP AL,9
JA LAB1
ADD AL,30H
JMP LAB2
LAB1:ADD AL,37H
LAB2:MOV ASCII,AL
MOV AH,4CH
INT 21H
CODE ENDS
END START
怎么会有错误呢?请大家帮忙更正
回复列表 (共11个回复)
沙发
bluelight [专家分:280] 发布于 2005-09-23 18:55:00
END START
CODE ENDS
板凳
delphi6 [专家分:3450] 发布于 2005-09-23 21:16:00
楼上的写错了吧.
3 楼
小微 [专家分:0] 发布于 2005-09-24 01:05:00
Bluelight 你说的不对啊![em7]
4 楼
追求 [专家分:110] 发布于 2005-09-25 09:01:00
这是我更正后的程序,运行正常。
主要问题:可能是大小写,把程序的2句改成小写后就运行正常。
我想可能是伪指令不能这样书写,具体原因我也不清楚,盼高手指点!!
DATA SEGMENT
XX DB 4
ASCII DB ?
DATA ENDS
code segment ;CODE SEGMENT
assume cs:code,ds:data ;ASSUEM CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,XX
AND AL,0FH ;高4位清零
CMP AL,9H ;这儿就好加上一个H
JA LAB1 ;大于则转移
ADD AL,30H ;小于或等于加30h
JMP LAB2
LAB1:ADD AL,37H ;大于加37h
LAB2:MOV ASCII,AL ;将结果保存
MOV AH,4CH
INT 21H
CODE ENDS
END START
5 楼
bai [专家分:70] 发布于 2005-09-25 19:36:00
[em4]好象跟大小写没什么关系吧!
谢谢!
6 楼
shanbeiminge [专家分:60] 发布于 2005-09-25 21:07:00
mov ah,4ch
试一下mov ax,4c00h
因为al不是为0
7 楼
追求 [专家分:110] 发布于 2005-09-25 22:24:00
我是四楼的,粘贴上去的程序运行正常,没有问题,可以实现楼主的功能。
8 楼
追求 [专家分:110] 发布于 2005-09-25 22:28:00
我知道了,不是大小写的问题,注意是这两句出错:
正确的语句:assume cs:code,ds:data
错误的语句:ASSUEM CS:CODE,DS:DATA
楼主把ASSUME错写成了ASSUEM
9 楼
小微 [专家分:0] 发布于 2005-09-26 09:27:00
[em8]谢谢大家的帮助
10 楼
shelluser [专家分:160] 发布于 2005-10-03 15:38:00
楼主
DATA SEGMENT
XX DB 4
ASCII DB ?
DATA ENDS
;
CODE SEGMENT
ASSUme CS:CODE,DS:DATA
START:MOV AX,DATA
MOV DS,AX
MOV AL,XX
AND AL,0FH
CMP AL,9
JA LAB1
ADD AL,30H
JMP LAB2
LAB1:ADD AL,37H
LAB2:MOV ASCII,AL
MOV Ax,4C00H
INT 21H
CODE ENDS
END START
我来回复