組合語言 判斷閏年

2021-08-19 19:56:22 字數 1363 閱讀 4777

要求:程式設計寫乙個完整的程式,求出2023年~2023年中的所有閏年年份,並把它們存放在陣列lyear中。

演算法分析:能被4整除但不能被100整除,或者能被400整除的年份是閏年。

1.esi=0  閏年個數計數器

ecx=2012    年份計數器

2.  while (ecx<2100)

ecx++; }

3.lcounter=esi;

演算法實現:

.code

main proc

invoke printf, offset msg

mov esi,0 ;esi指向陣列lyear中的第乙個元素位置

mov ecx,2012 ;年份計數器

mov edi,0 ;輸出陣列時所需的變址暫存器

again:

cmp ecx,2099

jnb result ;年份超出2012-2099範圍則跳轉至result進行輸出

mov eax,ecx

xor edx,edx

mov ebx,400

div ebx

cmp edx,0

je do

mov eax,ecx

xor edx,edx

mov ebx,4

div ebx

cmp edx,0

jne next

mov eax,ecx

xor edx,edx

mov ebx,100

div ebx

cmp edx,0

je next

do:mov lyear[esi*(type lyear)],ecx ;閏年年份存入lyear陣列中

inc esi ;陣列指標+1

next:

inc ecx ;年份計數器+1

jmp again ;繼續判斷年份是否是閏年

result:

pushad

invoke printf, offset output, lyear[edi*(type lyear)]

popad

inc edi

cmp edi,esi

jne result

mov lcounter,esi ;lcounter=esi=閏年個數

pushad

invoke printf, offset msg_count, lcounter

popad

retmain endp

end main

執行結果:

組合語言素數判斷程式

題目 編寫乙個程式,提示使用者輸入乙個數字,然後顯示資訊說明該數字是否是素數。素數 prime 是只能被自身和1整除的自然數。1 採用直接簡單的演算法 假設輸入n,將其逐個除以2 n 1,只要能整除 餘數為0 說明不是素數,只有都不能整除才是素數。2 採用只對奇數整除的演算法 1 2和3是素數,所有...

組合語言 AT T組合語言

這兩天的pwn題環境都是在linux中,採用的組合語言是 at t 格式。之前學習的是intel格式的8086彙編,今天學習了下at t組合語言。基於x86 架構的處理器所使用的彙編指令一般有兩種格式 操作intel格式at t格式 暫存器命名 push eax pushl eax 常數 立即運算元...

組合語言 彙編指令

功能 用來進行資料傳輸。以 mov a,b 為例,相當於a b。具有以下形式 mov 暫存器,資料 mov 暫存器,暫存器 mov 暫存器,記憶體單元 mov 記憶體單元,暫存器 mov 段暫存器,暫存器 功能 用來做加法。以 add a,b 為例,相當於a a b。具有的形式,和 mov 一樣。功...