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

求解决个问题

zhu224039 发布于 2012-10-01 01:56, 410 次点击
程序从键盘获取字符,如果不是数字键盘也不是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 编辑 ]
4 回复
#2
pangding2012-10-01 09:53
原来你真的是在自己学习汇编,难怪会在 数据结构 那边分享学习汇编的心得。
#3
zhu2240392012-10-01 10:30
回复 2楼 pangding
不学习汇编,对C语言怎么在运作的,我真的会没有一个 概念上的认识

#4
zklhp2012-10-01 10:43
帮顶
#5
lxq69668922012-10-24 13:02
可以利用堆栈,也可以把cx拆开用
1