Emu8086汇编程序,发现运行后只能输入个位数的求和,帮修改下啊!

Emu8086汇编程序,发现运行后只能输入个位数的求和,帮修改下啊!,第1张

给你提供几个函数。
input: ;功能是输入数字字符串
push ax ;入口参数dx,si
push cx ;dx是输出提示的偏移 si是存放数字字符串的偏移
push dx ;出口参数bx 输入参数的个数
push si
i1:
mov ah,9
int 21h

xor bx,bx

mov cx,5
i2:
mov ah,7
int 21h

cmp al,0dh
jz i3

cmp al,'0'
jb i2

cmp al,'9'
ja i2
mov [si],al
inc si
inc bx

mov dl,al
mov ah,2
int 21h

loop i2
i3:
cmp cx,5
jz i1

pop si
pop dx
pop cx
pop ax
ret
over: ;功能是检查字符串是否过大 最大为65535
push ax ;入口参数bx,si,di
push bx ;bx是输入字符串的个数
push cx ;si是被检查字符串的偏移
push si ;di是做比较字符串的偏移
push di ;出口参数bp 如果为1表示数字过大 0为正常

xor bp,bp
cmp bx,5
jb o3

lea di, overnum
mov cx,5
o1:
mov al, [si]
cmp al,[di]
jb o3
je o2
mov bp,1
jmp o3
o2:
inc si
inc di
loop o1

o3:
pop di
pop si
pop cx
pop bx
pop ax
ret
display: ;显示字符串 以0结束
push ax ;入口参数 si
push dx ;si为显示的字符串的偏移
push si
d1:
mov al,[si]
cmp al,0
jz d2
mov dl,al
mov ah,2
int 21h
inc si
jmp d1
d2:
pop di
pop dx
pop ax
ret
zhuang: ;把ascii数字转换成10进制值
push bx ;入口参数si
push cx ;si字符串的偏移
push dx ;出口参数ax
;ax中存放的是计算后的值
xor ax,ax
xor cx,cx
mov bx,10
mov al,[si]
sub al,30h
inc si
z1:
xor cx,cx
xor dx,dx
mov cl,[si]
inc si
cmp cl,0
jz z2
sub cl,30h
mul bx
add ax,cx
jmp z1
z2:
pop dx
pop cx
pop bx

ret
shuchu: ;把ax里的值转换成10进制输出
push ax ;入口参数ax
push bx ;ax里存放的是要转换的值
push cx
push dx
mov bx,10
xor cx,cx
sc1:
xor dx,dx
div bx
push dx
inc cx
cmp ax,0
jnz sc1

sc2:
pop dx
add dl,30h
mov ah,2
int 21h
loop sc2

pop dx
pop cx
pop bx
pop ax

ret
CODES ENDS
END START

以上就是关于Emu8086汇编程序,发现运行后只能输入个位数的求和,帮修改下啊!全部的内容,包括:Emu8086汇编程序,发现运行后只能输入个位数的求和,帮修改下啊!、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10132761.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存