data segment
num byte ?
inputstr db "please input a positive number:"
,"$"
;定義提示輸入的字串
outstr db "your input is:"
,"$"
;定義輸出的字串
errostr db "erro input!"
,"$"
;定義錯誤的字串
crlf db 0ah,
0dh,
'$';定義換行符
data ends
code segment
assume cs:code,ds:data ;段分配語句僅僅是建bai立段暫存器和段名之間關係
start:
main proc far
mov ax,data ;實就是把data(資料) 轉到 ds 資料段暫存器,讓資料段指向正確的位置。
mov ds,ax
lea dx,inputstr ;輸入提示資訊
mov ah,
09h ;呼叫dos系統09號中斷進行輸出字串
int21h mov ah,
01h ;呼叫dos中斷函式進行輸入
int21h cmp al,
'0' jb erro ;小於0跳轉到errr
cmp al,
'9';大於9跳轉
ja erro
jmp showinput ;輸入在0到9之間則正常輸出
showinput:
lea dx,crlf ;換行
mov ah,
09h int
21h lea dx,outstr ;輸出提示資訊
mov ah,
09h ;呼叫dos系統09號中斷進行輸出字串
int21h mov num,al ;將輸入緩衝區的字元傳送到num中
mov dl,num ;將num的值傳送到輸出緩衝區中
mov ah,
02h ;呼叫dos系統02嗯呢中斷進行輸出字元
int21h jmp exit ;跳轉到結束**塊
erro:
lea dx,crlf ;換行
mov ah,
09h int
21h lea dx,errostr
mov ah,
09h int
21h jmp exit
exit:
mov ah,
4ch ;呼叫dos系統4c號中斷進行結束程式,返回系統
int21h main endp
code ends
end start
ps:當我們輸入獲取的字元時,實際上獲取的是乙個ascii碼,因此當我們進行比較的時候必須要使用和ascii碼進行比較。 實現乙個彙編器
上文 彙編器原始碼剖析 中,我們對一彙編器進行了原始碼剖析,這裡我們仿照其實現乙個自己版本的彙編器,90 的東西都是借鑑於上文中的原始碼。實現乙個彙編器,首先需要定義乙個彙編指令集,這裡我們還是沿用上文中的彙編指令集。彙編指令與指令之間是一一對應的關係,也就是說是直譯的過程。我們的指令集是列舉型別,...
乙個整數的階乘最後有多少個0
問題 乙個整數的階乘最後有多少個0 分析 整數n的階乘 n!1 2 3 4 5 6 n 我們可以對n!進行分解質因數 即 n!2x 3y 5z 7w 其中能夠產生0的只有2和5,其他不會產生0 2和5相乘必然會產生乙個10,而這個10會在階乘的末尾新增乙個0。那麼問題就轉化為2x 5z 可以產生多少...
實現乙個整數N,其階乘N!末尾有多少個0?
給定乙個整數n,那麼n的階乘n!末尾有多少個0呢?例如 n 10,n!3 628 800,n!的末尾有兩個0。也許很多人首先想的就是先求出其階乘,然後通過其階乘判斷末尾有多少個0 我的第乙個想法也是如此 以下是我對於這個思想的 實現 void n of zero int n printf the s...