輸入函式,沒有入口引數,出口引數為ax
思路用乙個例子來解釋,比如要輸入215,
輸入2,預設輸入到al,令dl=al=2,al=bl=0,bl=al*10=0,bl=bl+dl=2
輸入1,預設輸入到al,令dl=al=1,al=bl=2,bl=al*10=20,bl=bl+dl=21
輸入5,預設輸入到al,令dl=al=5,al=bl=21,bl=al*10=210,bl=bl+dl=215
;定義input函式,輸入數值
input
proc
push
bxpush
cxpush
dxmovbl,
0;在計算過程中使用,
movcl,
10;定義乘數l4:
movah,1
;輸入資料
int 21h
cmpal,
'0';不滿足條件跳出
jbl3
cmpal
,'9'
;不滿足條件跳出
jal3
movdl,al
subdl,48
moval,bl
mulcl
movbl,al
addbl,dl
jmpl4l3:
movax,bx
popdx
popcx
popbx
retinput
endp
輸出函式,入口引數為ax,沒有出口引數
思路還是用乙個例子來解釋,比如要輸出215,
ax=215,al=ax/10=21, ah=ax%10=5, ax入棧,令ax=al=21(即ah=0)
ax=21,al=ax/10=2,ah=ax%10=1, ax入棧,令ax=al=2
ax=1,al=ax/10=0,ah=ax%10=2, ax入棧,令ax=al=0,跳出迴圈
依次出棧
;定義output函式
output
proc
push
axpush
bxpush
cxpush
dxmovbh,
0;記錄壓棧次數
movcl,
10l1
:addbh,
1divcl;
ax/cl,商al,餘數ah
push
axmovah,
0cmpal,
0jal1;全部壓棧,開始輸出l2:
subbh,1
popdx
movdl,dh
adddl,48
movah,2
int 21h
cmpbh,
0jal2pop
dxpop
cxpop
bxpop
axret
output
endp
彙編 判斷乙個兩位十進位制數是否為平方數
思路 這道題的思路非常簡單,列舉100以內的平方數,再判斷是否與輸入的數相等 但用組合語言實現可能會有一些複雜 data segment x dw s1 db is a square number s2 db is not a square number data ends code segment...
怎麼將乙個十六進製制數轉變成十進位制數
在程式中,我們有時需要將乙個十六進製制字串轉換為十進位制數字。比如 char ptr 0x11 int n 0 我們想讓n等於0x11,即17 通常我們在c中,想將乙個字串轉換為一整形數字,通常會使用下面的方法 view plaincopy to clipboardprint?char ptr 12...
彙編學習 一位十六進製制數轉換為十進位制數
程式執行效果如下 如題,此程式只能實現一位十六進製制數的轉換 具體 如下 datas segment buf db 5 dup msg1 db please input a hex number 13,10,設定提示 msg2 db the dec number 13,10,ctlf db 13,1...