若干个汇编子程序
最近开始上微机原理课,写了一些小规模的程序,均调试通过。算法非常简单,供新手学习!
PUBLIC printDec,getsDec,showBuff,space,enter,getsDec2,printDec2,printBin,printHex
_cod_minesegment
assumecs:_cod_mine
;.................................................
;1、过程名:printDec
;入口参数:BX
;功能:将BX值以十进制形式输出。
;出口参数:无。
;8086模式,16bit realmode
;.................................................
printDec PROCfar
pushf
push ax
push bx
push dx
pushcx
mov ax,bx
mov bx,10
xorcx,cx
lop10:xor dx,dx
div bx
add dx,30H
pushdx
inccx
cmp ax,0
jz lop11
jmp lop10
lop11:movah,2
popdx
int21h
looplop11
Quit10: popcx
pop dx
pop bx
pop ax
popf
ret
printDec endp
;.................子过程结束.....................
;.................................................
;2、子过程名:getsDec
;功能:输入无符号数,按回车结束,并保存在Bx中,无回显。
;入口:无,
;出口:BX
;8086,16bit real mode
;................................................
getsDecPROCfar
pushf
push ax
push dx
xordx,dx
lop20:mov ah,8
int 21h
cmpal,0dh
jzquit20
sub al,30h
pushax
mov bx,10
mov ax,dx
mulbx
mov dx,ax
pop ax
xorah,ah
adddx,ax
jmplop20
quit20:mov bx,dx
pop dx
pop ax
popf
ret
getsDecendp
;.................子过程结束.....................
;.................................................
;3、子过程名:getsDec2
;功能:输入带符号数,按回车结束,并保存在Bx中,无回显。
;入口:无,
;出口:BX
;8086,16bit real mode
;................................................
getsDec2PROCfar
pushf
push ax
push dx
pushcx
xordx,dx
xorcx,cx
lop30:mov ah,8
int 21h
cmpal,0dh
jzquit31
cmp al,2dH
jzs1
sub al,30h
pushax
mov bx,10
mov ax,dx
mulbx
mov dx,ax
pop ax
xorah,ah
adddx,ax
jmplop30
s1:movcx,1
jmplop30
quit31: mov bx,dx
cmpcx,1
jzs2
jmpquit30
s2:negbx
jmpquit30
quit30:popcx
pop dx
pop ax
popf
ret
getsDec2 endp
;.................子过程结束.....................
;.................................................
;4、过程名:printDec2
;入口参数:BX
;功能:将BX值以带符号十进制形式输出。
;出口参数:无。
;8086模式,16bit realmode
;.................................................
printDec2 PROCfar
pushf
push ax
push bx
push dx
pushcx
pushsi
mov ax,bx
mov bx,10
xorcx,cx
xorsi,si
cmpax,0
jgelop40
movsi,1
negax
lop40:xor dx,dx
div bx
add dx,30H
pushdx
inccx
cmp ax,0
jnzlop40
lop41:cmpsi,1
jnzsss
movax,2dh
pushax
inccx
sss:movah,2
popdx
int21h
loopsss
Quit40: popsi
popcx
pop dx
pop bx
pop ax
popf
ret
printDec2 endp
;.................子过程结束.....................
;.................................................
;5、过程名:printBin
;入口参数:BX
;功能:将BX值以二进制形式输出。
;出口参数:无。
;8086模式,16bit realmode
;.................................................
printBin PROCfar
pushf
push ax
push bx
push dx
pushcx
movcx,10h
lop50:xordx,dx
rolbx,1
adcdl,dh
adddl,30h
movah,02h
int21h
looplop50
Quit50: popcx
pop dx
pop bx
pop ax
popf
ret
printBin endp
;.................子过程结束.....................
;.................................................
;6、过程名:printHex
;入口参数:BX
;功能:将BX值转化为十六进制形式并输出。
;出口参数:无。
;8086模式,16bit realmode
;.................................................
printHex PROCfar
pushf
push ax
push bx
push dx
pushcx
mov ax,bx
mov bx,16
xorcx,cx
lop60:xor dx,dx
div bx
cmpdx,9
jnass61
add dx,37H
jmpconti60
ss61:adddx,30h
conti60:pushdx
inccx
cmp ax,0
jz lop61
jmp lop60
lop61:movah,2
popdx
int21h
looplop61
Quit60: popcx
pop dx
pop bx
pop ax
popf
ret
printHex endp
;.................子过程结束.....................
;.................................................
;7、子过程名:showBuff
;入口参数:ds数据段,si指向缓冲区首址.........
;功能:将si指向的缓冲区显示到屏幕上...........
;出口参数:无
;缓冲区必须以“$”结尾!
;.................................................
showBuff procfar
pushf
pushax
pushdx
pushsi
mov dx,si
mov ah,09h
int 21h
popsi
popdx
popax
popf
ret
showBuff endp
;.................子过程结束.....................
;.................................................
;8、子过程名:space
;功能:显示空格。
;入口:无,出口:无。
;.................................................
spacePROCfar
pushax
pushdx
movah,2
movdl,20h
int 21h
popdx
popax
ret
spaceendp
;.................子过程结束.....................
;.................................................
;8、子过程名:enter
;功能:回车,换行
;入口:无,出口:无
;.................................................
enterPROCfar
pushax
pushdx
movah,2
movdl,0dh
int21h
movah,2
movdl,0ah
int21h
popdx
popax
ret
enterendp
;.................子过程结束.....................
_cod_mineends
end
[解决办法]
谢谢,不过能不能请问怎么用汇编完成一下功能:从键盘输入5个整数,求其中负数的平方和···