彙編實現乙個0到9的整數輸入

2021-10-08 05:44:30 字數 1749 閱讀 3230

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...