请教,如果把缓冲区的数据保存在寄存器中

masmaster 2010-07-02 11:18:06
举例如下
a
ssume  cs:code
data segment
str db 'input a string:','$'
buff db 10,?,10 dup (0)
data ends
code segment
start:
mov ax,data
mov ds,ax
lea dx,str
mov ah,9
int 21h
;假如我输入了十进制数字12345
;在缓冲区里, 他们这么排列:31,32,33,34,35,
mov ah,0ah
lea dx,buff
int 21h
;我想把这123456放在一个寄存器里, 请问,如何实现【12345<65535,肯定放的下】
;比如,放在AX里。
mov ah,4ch
int 21h
code ends
end start
...全文
125 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
masmaster 2010-07-03
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 dididu1515 的回复:]
;1、键盘输入数据,以回车结束输入。(0~65535)
;2、数值结果放入dx
;3、可以直接调用,然后在dx里面娶出要的结果。
;!!! 如超出65535的,取超出部分到DX !!!
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
org 100h
START:
push cs
pop ds
lea dx,str
mov ah,9
int 21h……

[/Quote]万分感谢, 仔细研究 。
dididu1515 2010-07-03
  • 打赏
  • 举报
回复
结果放在AX中!!!
dididu1515 2010-07-03
  • 打赏
  • 举报
回复
;1、键盘输入数据,以回车结束输入。(0~65535)
;2、数值结果放入dx
;3、可以直接调用,然后在dx里面娶出要的结果。
;!!! 如超出65535的,取超出部分到DX !!!
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
org 100h
START:
push cs
pop ds
lea dx,str
mov ah,9
int 21h
call shur
mov ah,0
int 16h
mov ah,4ch
int 21h

shur proc
push bp
push cx
push bx
xor bp,bp
mov bx,10
mov cx,5
input:
mov ah,0 ;键盘输入数据
int 16h
cmp al,0dh ;以回车结束输入
jz ok
cmp al,'0' ;只允许输入0~9
jb input
cmp al,'9'
ja input
mov ah,0eh ;显示有效输入
int 10h
sub al,30h ;化ASCII为HEX
cbw ;字节扩展为字
xchg ax,bp
mul bx ;扩大10倍
add bp,ax ;加一位
loop input
ok:mov ax,bp ;数值结果放入ax
;恢复用到的寄存器
pop bx
pop cx
pop bp
ret
shur endp
str db 'input a string:','$'

CODE ENDS
END START
masmaster 2010-07-03
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 xianzq888 的回复:]
呃,顶你..
[/Quote]谢顶~~
  • 打赏
  • 举报
回复
呃,顶你..
masmaster 2010-07-03
  • 打赏
  • 举报
回复
找到办法啦~~~按权展开!

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧