注册 登录
编程论坛 汇编论坛

输入0—9中得一个数,输出其对应的英文单词。

hustluojiang 发布于 2013-04-20 15:06, 1552 次点击
刚刚学汇编,不太懂,请大神们指教!!
.386
DATA SEGMENT
INPUT  DB  'INPUT X(0-9):$'
TAB    DB  'ZERO$ ','ONE$  ','TWO$  ','THREE$','FOUR$ ','FIVE$ ','SIX$ ','SEVEN$','EIGHT$','NINE$ ' ;算上空格,每部分占6个字符
X      DB  ?
INERR  DB  0AH,0DH,'INPUT ERROR!TRY AGAIN',0AH,0DH,'$'
CRLF   DB  0DH,0AH,'$'
DATA ENDS

STACK SEGMENT USE16 STACK
   DB 200 DUP(0)
STACK ENDS

CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA,SS:STACK
START:MOV AX,DATA
      MOV DS,AX
NEXT:MOV DX,OFFSET INPUT
     MOV AH,9
     INT 21H
     
     MOV AH,1
     INT 21H
     
     LEA DX,CRLF
     MOV AH,9
     INT 21H
     
     CMP AL,'0'
     JB ERR
     CMP AL,'9'
    JA ERR
      
     AND AL,0FH
     MOV X,AL
     MOV Bl,X
     MOV BH,0
     MOV SI,BX
     IMUL SI,6
     
     MOV BL,TAB
     MOV BH,0
     LEA DX,[BX+SI]
     MOV AH,9
     INT 21H
EXIT:MOV AH,4CH
     INT 21H
ERR:MOV DX,OFFSET INERR
    MOV AH,9
    INT 21H
    JMP NEXT
CODE ENDS
 END START

为什么输出的都是乱码??实在是不知道哪里错了。谢谢各位了!

[ 本帖最后由 hustluojiang 于 2013-4-20 16:18 编辑 ]
5 回复
#2
hustluojiang2013-04-21 00:35
很急啊,求大神指点啊
#3
hu9jj2013-04-21 10:26
要输出的都是英文字母,输出了乱码,则肯定是数据的地址不正确。将下列红色部分修改一下试试:

DATA SEGMENT
INPUT  DB  'INPUT X(0-9):$'
TAB    DB  'ZERO$ ','ONE$  ','TWO$  ','THREE$','FOUR$ ','FIVE$ ','SIX$ ','SEVEN$','EIGHT$','NINE$ ' ;算上空格,每部分占6个字符
X      DB  ?
INERR  DB  0AH,0DH,'INPUT ERROR!TRY AGAIN',0AH,0DH,'$'
CRLF   DB  0DH,0AH,'$'
DATA ENDS

STACK SEGMENT USE16 STACK
   DB 200 DUP(0)
STACK ENDS

CODE SEGMENT USE16
ASSUME CS:CODE, DS:DATA,SS:STACK
START:MOV AX,DATA
      MOV DS,AX
NEXT:MOV DX,OFFSET INPUT
     MOV AH,9
     INT 21H
     
     MOV AH,1
     INT 21H
     
     LEA DX,CRLF
     MOV AH,9
     INT 21H
     
     CMP AL,'0'
     JB ERR
     CMP AL,'9'
    JA ERR
      
     AND AL,0FH
     MOV X,AL
     MOV Bl,X
     MOV BH,0
     MOV SI,BX
     IMUL SI,6
     
     MOV BL,OFFSET TAB
     MOV BH,0
     LEA DX,[BX+SI]
     MOV AH,9
     INT 21H
EXIT:MOV AH,4CH
     INT 21H
ERR:MOV DX,OFFSET INERR
    MOV AH,9
    INT 21H
    JMP NEXT
CODE ENDS
END START
#4
hustluojiang2013-04-21 11:56
回复 3楼 hu9jj
还是不行。。。
#5
hu9jj2013-04-21 13:31
我的DOS中断手册不在身边,暂时看不出哪里有问题。你首先确定程序能运行么,能提示用户输入么,能判断录入了错误的数据么,程序能正常结束么。
#6
hustluojiang2013-04-21 16:55
我刚刚弄好了。还是谢谢了
1