Win32彙編 選擇結構

2021-08-28 18:03:14 字數 4926 閱讀 7004

;*【*/

.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...