1. 程式人生 > >Win32彙編 MASM整數+-*/%

Win32彙編 MASM整數+-*/%

題目1:

鍵盤輸入整數x、y、z的值,求如下表達式的值: x*y+x/y-z 執行後若輸入:8 4 2 則結果輸出:8*4+8/4-2=32

 ;*【*/
.386				;選擇的處理器
.model flat, stdcall	
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 ?
y DWORD ?
z DWORD ?

a DWORD ?
b DWORD ?
d DWORD ?

fmt BYTE '%d %d %d',0
fmt2 BYTE '%d*%d+%d/%d-%d=%d',0
.CODE
start:  
invoke scanf,ADDR fmt,ADDR x,ADDR y,ADDR z
MOV EAX,x
IMUL y
MOV a,EAX

CDQ
MOV EAX,x
IDIV y
MOV b,EAX

MOV EAX,a
ADD EAX,b
SUB EAX,z
MOV d,EAX

invoke printf,ADDR fmt2,x,y,x,y,z,d
invoke	ExitProcess,0		;退出程序,返回值為0
end start
 ;*】*/

題目2:

鍵盤輸入整數x、y、z的值,求如下表達式的值: x*y+x%y-z 執行後若輸入:8 4 2 則結果輸出:8*4+8%4-2=30

 ;*【*/
.386				;選擇的處理器
.model flat, stdcall	
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 ?
y DWORD ?
z DWORD ?

a DWORD ?
b DWORD ?
d DWORD ?

fmt BYTE '%d %d %d',0
fmt2 BYTE '%d*%d+%d%%%d-%d=%d',0
.CODE
start:
invoke scanf,ADDR fmt,ADDR x,ADDR y,ADDR z
MOV EAX,x
IMUL y
MOV a,EAX

CDQ
MOV EAX,x
IDIV y
MOV b,EDX

MOV EAX,a
ADD EAX,b
SUB EAX,z
MOV d,EAX


invoke printf,ADDR fmt2,x,y,x,y,z,d

invoke	ExitProcess,0		;退出程序,返回值為0
end start


 ;*】*/

題目3:

輸入兩個小寫字母,然後輸出其相應的大寫字母。 執行後輸入: a b 則結果輸出: A B

.386				;選擇的處理器
.model flat, stdcall	
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 BYTE ?
y BYTE ?
fmt BYTE '%c %c',0
fmt2 BYTE '%c %c',0 
.code
start:
invoke scanf,ADDR fmt,ADDR x,ADDR y
MOV AL,x
SUB AL,32
MOV x,AL

MOV AL,y
SUB AL,32
MOV y,AL

invoke printf,ADDR fmt2,DWORD ptr x,DWORD ptr y

 ;*】*/
invoke	ExitProcess,0		;退出程序,返回值為0
end start