求解决个问题
程序从键盘获取字符,如果不是数字键盘也不是ENTER,结束程序,如果是ENTER表示 数字输入结束 约定起头不能输入ENTER讲输入的字符ASCII吗 转换成数字 1 2 3 等,再通过输入 a=a*10+b计算出 输入数字组合的二进制码 输入数据在反向转换成字符 显示出来
date segment
shu dw ?
ascii db 10 dup(?),'$'
date ends
code segment
assume cs:code,ds:date
mov ax,date
mov ds,ax
mov bx,0 ;bx 存放 BX*10+b的结果,最后的数就是键盘输入 123的十进制 123
mov cx,0
node:mov ah,1 ;node jmp node 形成循环 从键盘输入1234
int 21h
cmp al,0dH
jz node3
cmp al,30h
jb over
cmp al,39h
ja over
sub al,48
mov ah,0
add bx*10,ax ;-------》BX*10 怎么弄啊 ,CX有值了 AX有了,MUL 要用到AX和 DX 我木有AX了
inc cx ; CX记录下输入字符的个数
jmp node
node3:cmp cx,0
jz over
mov si,offset ascii
node1: mov ax,10 ;node loop node 完成 bx/10 取余数 将余数+48 变成 数字的ASCII码存放到 ASCII为偏移起始地址的数据区
div bx
mov bx,ax
add dl,48
mov [si],dl
inc si
loop node1
mov dx,offset ascii
mov ah,9 ;调用DOS 9号功能显示字符串
int 21h
over: mov ah,4ch
int 21h
code ends
end
[ 本帖最后由 zhu224039 于 2012-10-1 02:11 编辑 ]