从键盘输入一个 16 进制数,转换成十进制数然后输出,汇编程序实现啊
比如输入数字 1 到 9,则输出 1 到 9,如果输入字母 a b c ...则输出 10 11 12
有人帮编出个能运行的汇编程序吗?别给我讲原理上是怎么转化,亲自动手做出才哈·
我帮你写,不懂的可以问我。
加了个错误提示信息,而且写上注释给你
DATA SEGMENT
DATA1 DB ?
DATA2 DB 2 DUP(?)
DATA20 DB 2 DUP(?)
DATA3 DB 'Input Error, Please Enter Again!','$'
DATA ENDS
STACK SEGMENT
DB 5 DUP(?)
STACK ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA,SS:STACK
START: MOV AX,DATA ;数据段基地址
MOV DS,AX ;送到DS
MOV AX,STACK ;堆栈段基地址
MOV SS,AX ;送到SS
MOV BX,0 ;BX清零
INPUT: MOV AH,01H ;从键盘输入一个数,
INT 21H ;并在屏幕上显示,字符保存在AL中
CMP AL,51H ;判断输入的字符是否为 Q
JE EXIT ;如果是 Q 就退出
CMP AL,71H ;判断输入的字符是否为 q
JE EXIT ;如果是 q 就退出
PUSH AX ;把从键盘输入的字符的 ASCII 存到堆栈段
SUB AL,30H ;转换成二进制数
CMP AL,00H ;与零做比较
JL INDI ;如果小于零转到INDI
CMP AL,09H ;与9做比较
MOV BL,AL ;把此时AL中二进制数传到BL中
JLE OUTPUT2 ;如果小于等于9则转到OUTPUT2
评论0