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