Loading [MathJax]/extensions/TeX/AMSmath.js

2016年4月12日 星期二

[組合語言][masm]計算閏年

題目:輸入民國年份,求該年是否為閏年


程式碼:


TITLE 輸入民國年份,求該年是否為閏年 (h503.asm)
INCLUDE Irvine32.inc ;INCLUDE 指令會從位於組譯器的INCLUDE目錄內的Irvine32.inc文字檔中,複製必要的定義與初始資訊
.data ;.data標記程式中含有變數的區域
InputString BYTE "輸入民國幾年:",0
msg0 BYTE "為閏年",0
msg1 BYTE "不是閏年",0
year DD ?
tag1 DD 0 ;逢四閏年
tag2 DD 0 ;逢百不閏
tag3 DD 0 ;逢四百又閏
.code ;.code指引標記著程式碼區段起始的位置,所有可執行的敘述,都會放在程式碼區段內
Compute PROC USES ecx edx eax esi
;逢四閏年 tag1 = 0
mov eax,year
xor edx,edx
mov ebx,4t
div ebx
mov tag1,edx
;逢百不閏 tag2 != 0
mov eax,year
xor edx,edx
mov ebx,100t
div ebx
mov tag2,edx
;逢四百又閏 tag3 = 0
mov eax,year
xor edx,edx
mov ebx,400t
div ebx
mov tag3,edx
.IF tag1 == 0 && (tag2!=0 || tag3 == 0)
mov edx,OFFSET msg0
call WriteString
.ELSE
mov edx,OFFSET msg1
call WriteString
.ENDIF
call Crlf
ret
Compute ENDP
main PROC ;PROC指引標記著程序的起始位置
mov edx,OFFSET InputString
call WriteString
;讀入年分
call ReadInt
add eax,1911
mov year,eax
call Compute
exit ;將(非直接)呼叫一個預先定義的MS-Windows函式,此函式的作用是停止此程式的執行
main ENDP ;ENDP標記main程序的結束位置
END main ;標記此程式啟動的程序
view raw h503.asm hosted with ❤ by GitHub

沒有留言:

張貼留言

注意:只有此網誌的成員可以留言。