Win32汇编 MASM整数+-*/%

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/yky__xukai/article/details/82937048

题目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

 

猜你喜欢

转载自blog.csdn.net/yky__xukai/article/details/82937048