;*【*/
.386 ;選擇的處理器
.model flat, stdcall ;儲存模型,win32程式只能用平展(flat)模型
option casemap:none ;指明識別符號大小寫敏感
include kernel32.inc ;要引用的標頭檔案
includelib kernel32.lib ;要引用的庫檔案
includelib msvcrt.lib ;引用c庫檔案
scanf proto c:dword,:vararg ;c語言scanf函式原型宣告
printf proto c:dword,:vararg ;c語言printf函式原型宣告
.data
x sdword ?
y sdword 3
fmt byte '%d',0
fmt2 byte '%d',0
.code
start:
invoke scanf,addr fmt,addr x
mov eax,x
cmp eax,0
jg great0; x>0轉great0
jmp done
great0:
cmp eax,10
jge great10;x>=10轉great10
imul x
jmp done
great10:
imul y
done:
invoke printf,addr fmt2,eax
invoke exitprocess,0
end start
;*】*/
;*【*/
.386 ;選擇的處理器
.model flat, stdcall ;儲存模型,win32程式只能用平展(flat)模型
option casemap:none ;指明識別符號大小寫敏感
include kernel32.inc ;要引用的標頭檔案
includelib kernel32.lib ;要引用的庫檔案
includelib msvcrt.lib ;引用c庫檔案
scanf proto c:dword,:vararg ;c語言scanf函式原型宣告
printf proto c:dword,:vararg ;c語言printf函式原型宣告
.data
x sdword ?
y sdword ?
z sdword 3
fmt db '%d',0
.code
start:
invoke scanf,addr fmt,addr x ;輸入整數成績
.if x<=0 ;若成績x>=60
mov eax,x
mov y,eax
.else
.if x<10 ;若成績x>=60
mov eax,x
imul x
mov y,eax
.else
mov eax,x
imul z
mov y,eax
.endif
.endif
invoke printf,addr fmt,y ;否則輸出x是不及格
invoke exitprocess,0
end start
.386 ;選擇的處理器
.model flat, stdcall ;儲存模型,win32程式只能用平展(flat)模型
option casemap:none ;指明識別符號大小寫敏感
include kernel32.inc ;要引用的標頭檔案
includelib kernel32.lib ;要引用的庫檔案
includelib msvcrt.lib ;引用c庫檔案
scanf proto c:dword,:vararg ;c語言scanf函式原型宣告
printf proto c:dword,:vararg ;c語言printf函式原型宣告
.data ;⑤資料段
;*【*/
x dword ?
a dword 3
b dword 5
d dword 7
intftm byte '%d',0
outftm byte '%d',0
.code
start:
invoke scanf,addr intftm,addr x
mov eax,x
cdqidiv a
.if edx==0
invoke printf,addr outftm,a ;判斷被三整除
.endif
mov eax,x
cdqidiv b
.if edx==0
invoke printf,addr outftm,b ;判斷被五整除
.endif
mov eax,x
cdqidiv d
.if edx==0
invoke printf,addr outftm,d ;判斷被七整除
.endif
;*】*/
invoke exitprocess,0 ;⑨退出程序,返回值為0
end start ;⑩指明程式入口點start
.386 ;選擇的處理器
.model flat, stdcall ;儲存模型,win32程式只能用平展(flat)模型
option casemap:none ;指明識別符號大小寫敏感
include kernel32.inc ;要引用的標頭檔案
includelib kernel32.lib ;要引用的庫檔案
includelib msvcrt.lib ;引用c庫檔案
scanf proto c:dword,:vararg ;c語言scanf函式原型宣告
printf proto c:dword,:vararg ;c語言printf函式原型宣告
.data ;⑤資料段
;*【*/
fmt byte '%d',0
fnt byte '%s',0
fmt1 byte '優秀',0
fmt2 byte '良好',0
fmt3 byte '中',0
fmt4 byte '及格',0
fmt5 byte '不及格',0
x dword ?
.code
start:
invoke scanf,addr fmt,addr x
.if x>=90
invoke printf,addr fnt,addr fmt1
.elseif x>=80
invoke printf,addr fnt,addr fmt2
.elseif x>=70
invoke printf,addr fnt,addr fmt3
.elseif x>=60
invoke printf,addr fnt,addr fmt4
.else
invoke printf,addr fnt,addr fmt5
.endif
;*】*/
invoke exitprocess,0 ;⑨退出程序,返回值為0
end start ;⑩指明程式入口點start
;*【*/
.386 ;選擇的處理器
.model flat, stdcall ;儲存模型,win32程式只能用平展(flat)模型
option casemap:none ;指明識別符號大小寫敏感
include kernel32.inc ;要引用的標頭檔案
includelib kernel32.lib ;要引用的庫檔案
includelib msvcrt.lib ;引用c庫檔案
scanf proto c:dword,:vararg ;c語言scanf函式原型宣告
printf proto c:dword,:vararg ;c語言printf函式原型宣告
.data ;⑤資料段
x qword ?
y1 qword -1.0
y2 qword 1.0
y3 qword 2.0
z qword ?
fmt byte '%lf',0
fmt1 byte '%.2lf',0
.code
start:
invoke scanf,addr fmt,addr x
fequ=40h
fless=1
fld x
fcomp y1
fnstsw ax
.if (ah & fless) ;xfld x
fsin
fstp z
invoke printf,addr fmt1,z ;
.else ;-1.0<=x
fld x
fcomp y2
fnstsw ax
.if ah & (fless or fequ) ;x<=1.0
fld x
fmul y3
fstp z
invoke printf,addr fmt1,z
.else
fld x
fcos
fstp z
invoke printf,addr fmt1,z
.endif
.endif
invoke exitprocess,0
end start
;*】*/
Win32彙編基礎
常用指令 mov 目標運算元,源運算元 mov eax,0x0 進行資料傳遞 movzx mov zero x 以0填充高位,用法同上,push poppushad 所有暫存器壓棧 8個 popad 所有暫存器出棧 8個 lea 取位址指令,類似c語言中的 call 呼叫函式指令 add 加 sub...
Win32彙編 實數
386 選擇的處理器 model flat,stdcall option casemap none 指明識別符號大小寫敏感 include kernel32.inc 要引用的標頭檔案 includelib kernel32.lib 要引用的庫檔案 includelib msvcrt.lib 引用c庫...
開始學習win32彙編
前段時間對於csdn的部落格系統徹底失望,在我現在寫的東西都還不知道能不能正常發出去,鬱悶,加上過年有這麼久沒有來了。這段時間開始學習彙編,說到彙編,大學開過兩門相關課程,微機原理和微控制器都是學這方面的,不過那都是8086,51級別的彙編,感覺根本跟不上時代,那時候學的還不錯 現在想學習學習win...