汇编 输入一个字符,怎样把它转化成为数字

MOVAH,1INT21HSUBAX,'0'我用这个程序,只能在AL里输入一个0-9的字符,但是我希望把它转化成一个数字,能够进行运算,比如如果输入的是3想要SARAX3... MOV AH, 1
INT 21H
SUB AX, '0'

我用这个程序,只能在AL 里输入一个0-9 的字符,但是我希望把它转化成一个数字,能够进行运算,比如

如果输入的是3
想要SAR AX 3, 乘8 倍得到24

但是这个仅仅是字符而已,根本不能做这种数学运算,一旦这么做了,得到的不是数字,而是一个ASCII 码所对应的符号,比如$ ~ 这样的东西

求助, 如何把输入的字符转换成数字
或者,如何直接通过键盘输入数学的数字? 而不只是一个符号而已
展开
 我来答
tae007
2009-06-02
知道答主
回答量:4
采纳率:0%
帮助的人:7084
展开全部
mov ah,1
int 21h
第一行表示字符输入功能(1号)赋值给ah
第二行是触发上面的那条指令 内部中断指令 使得输入并显示在屏幕上。

内存中存放的是一个字符的ASCII码 比如‘$’这个是美元符 对应的ASCII码为24 通常表示字符串的结尾。

(1)1号系统功能调用-键盘输入并回显
此调用的功能是系统扫描键盘并等待键盘输入一个字符,有键按下时,先检查是否是Ctrl+Break键,若是则将字符的键值(ASCII码)送入AL寄存器中,并在屏幕上显示该字符。
此调用没有入口参数。
例如:下列语句可实现键盘输入。
MOV AH,01H ;01H为功能号
INT 21H

(2)2号系统功能调用-显示输出
此调用的功能是向输出设备输出一个字符。
入口参数:被显示字符的ASCII送DL。
例如:要在屏幕上显示“$”符号,可用以下指令序列
MOV DL,’$’
MOV AH,02H
INT 21H
(3)3号系统功能调用-异步通信输入(从串口输入字符)
3号系统功能调用的功能是将从异步串行通信口(默认为COM1)输入一个字符(或者ASCII码)。
出口参数:输入的ACSII码送AL寄存器中。
DOS系统初始化时此端口的标准是字长8位、2400波特、一个停止位、没有奇偶校验位。
(4)4号系统功能调用-异步通信输出(从串口输出字符)
此调用的功能是系统将从异步通信口(默认为COM1)输出一个字符(或者ASCII码)。
入口参数:被输出的字符的ASCII码送入DL中。
例如:现要将“$”这个符号通过异步串行通信口输出,指令序列如下:
MOV DL,’$’
MOV AH,04H
IN 21H

5)5号系统功能调用-打印机输出(从串口输出字符)
此调用的功能是将一个字符输出到打印机(默认1号并行口)。
入口参数:欲打印的字符的ASCII码送入DL寄存器中。

6)6号系统功能调用-直接控制台输入输出字符
此调用的功能是从键盘输入一个字符,或输出一个字符到屏幕。
如果(DL)=0FFH,表示是从键盘输入字符。
当标志ZF=0时,表示有键被按下,将字符的ASCII码送入AL寄存器中。
当标志ZF=1时,表示没有键按下,寄存器AL中不是键入字符的ASCII码。
如果(DL)≠0FFH,表示输出一个字符到屏幕,将被输出字符ASCII码送到DL中。此调用与1号、2号调用的区别在于不检查Ctrl+Break。
百度网友195d578
2009-06-02 · TA获得超过261个赞
知道小有建树答主
回答量:387
采纳率:0%
帮助的人:238万
展开全部
输入的字符也是ASCII码啊,比如输入'1',存在寄存器里的值应该是31H,只要把这个值减去30H就可以得到1了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
NJGQZF
2015-06-11 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3165
采纳率:0%
帮助的人:1250万
展开全部
汇编语言中,输入一个数字字符,转化成为数字,可参照以下示例程序:
data segment
str db db 'INPUT STR:$'
num db ?
data ends

code segment
assume cs:code,ds:data
main proc far
start:
mov ax,data
mov ds,ax
lea si,str
inputr: mov dx,offset str;显示“INPUT STR:”
call crlf;回车换行
mov ah,09h
int 21h
mov ah,01h;等待输入直到输入一个数字字符
int 21h

cmp al,30h;确认是数字字符0至9
jc inpstr
cmp a1,3ah
jnc inputr

sub al,30h;转换为数字逆序输出字符串
mov [si],al;存入num

mov ah,4ch;结束程序
int 21h
ret
main endp
crlf proc near ;回车换行子程序
mov dl,0ah
mov ah,02h
int 21h
mov dl,0dh
mov ah,02h
int 21h
ret
crlf endp
code ends
end start
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式