
给你提供几个函数。
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汇编程序,发现运行后只能输入个位数的求和,帮修改下啊!、、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)