要求:程式設計寫乙個完整的程式,求出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 一樣。功...