回 帖 发 新 帖 刷新版面

主题:把一个十六进制数转换为对应的ASCII程序!

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个回复)

沙发

END START
CODE ENDS

板凳

楼上的写错了吧.

3 楼

Bluelight 你说的不对啊![em7]

4 楼

这是我更正后的程序,运行正常。
主要问题:可能是大小写,把程序的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 楼

[em4]好象跟大小写没什么关系吧!
谢谢!

6 楼



   mov ah,4ch
   试一下mov ax,4c00h
   因为al不是为0

7 楼

我是四楼的,粘贴上去的程序运行正常,没有问题,可以实现楼主的功能。

8 楼

我知道了,不是大小写的问题,注意是这两句出错:
  正确的语句:assume cs:code,ds:data
  错误的语句:ASSUEM CS:CODE,DS:DATA
        楼主把ASSUME错写成了ASSUEM

9 楼

[em8]谢谢大家的帮助

10 楼

楼主   

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

我来回复

您尚未登录,请登录后再回复。点此登录或注册