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

 

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值