兩種方法
方法一:
include io32.inc
.data
ts byte "please input a number",13,10,0
sc1 byte "this is a sushu",13,10,0
sc2 byte "this is not a sushu",13,10,0
temp byte 2
.code
start:
mov eax,offset ts
call dispmsg
call readuiw;輸入數字
cmp ax,3;看是否小於等於3
jbe success
mov bx,ax;把值儲存起來
div temp;看是否是偶數
cmp ah,0
jz err
mov ax,bx;恢復儲存的值
add temp,1;除數從奇數3開始
movzx ecx,ax;傳遞歸圈次數
sub ecx,3;總的迴圈次數
again:
mov bx,ax;把值儲存起來
div temp;除以以3開始的每個奇數
cmp ah,0
jz err
mov ax,bx;恢復儲存的值
add temp,2;除數奇數增大2
sub ecx,2;由於除數temp每次都是增加2,所以這裡的迴圈次數也跟著多減少1次
jnz again
success:mov eax,offset sc1
call dispmsg
jmp done
err:
mov eax,offset sc2
call dispmsg
done:
exit 0
end start
方法2:
include io32.inc
.data
ts byte "please input a number",13,10,0
sc1 byte "this is a sushu",13,10,0
sc2 byte "this is not a sushu",13,10,0
temp byte 2
.code
start:
mov eax,offset ts
call dispmsg
call readuiw;輸入數字
cmp ax,3;判斷是否小於3
jbe success
movzx ecx,ax;傳遞歸圈次數
sub ecx,2
again:
mov bx,ax;儲存數值
div temp;除以從2開始的除數
cmp ah,0;判斷是否整除
jz err
mov ax,bx;恢復數值
inc temp;除數加1
loop again
success:mov eax,offset sc1
call dispmsg
jmp done
err:
mov eax,offset sc2
call dispmsg
done:
exit 0
end start
組合語言素數判斷程式
題目 編寫乙個程式,提示使用者輸入乙個數字,然後顯示資訊說明該數字是否是素數。素數 prime 是只能被自身和1整除的自然數。1 採用直接簡單的演算法 假設輸入n,將其逐個除以2 n 1,只要能整除 餘數為0 說明不是素數,只有都不能整除才是素數。2 採用只對奇數整除的演算法 1 2和3是素數,所有...
組合語言編寫的Hello World
linux 下用組合語言編寫的 具有兩種不同的形式。第一種是完全的彙編 指的是整個程式全部用組合語言編寫。儘管是完全的彙編 linux 平台下的彙編工具也吸收了 c 語言的長處,使得程式設計師可以使用 include ifdef 等預處理指令,並能夠通過巨集定義來簡化 第二種是內嵌的彙編 指的是可以...
組合語言檢測點10 4
建議先自己思考問題的答案,不懂則返回看書 這兒用到了bp,除了之前這樣用過bp外 bx bp 還會在棧中用到。比如說,堆疊中壓入了很多資料或者位址,你肯定想通過sp來訪問這些資料或者位址,但sp是要指向棧頂的,是不能隨便亂改的,這時候你就需要使用bp,把sp的值傳遞給bp,通過bp來尋找堆疊裡資料或...