题目1:
;*【*/
.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
;*】*/
题目2:
;*【*/
.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
题目3:
.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
CDQ
IDIV a
.IF EDX==0
invoke printf,ADDR outftm,a ;判断被三整除
.ENDIF
MOV EAX,x
CDQ
IDIV b
.IF EDX==0
invoke printf,ADDR outftm,b ;判断被五整除
.ENDIF
MOV EAX,x
CDQ
IDIV d
.IF EDX==0
invoke printf,ADDR outftm,d ;判断被七整除
.ENDIF
;*】*/
invoke ExitProcess,0 ;⑨退出进程,返回值为0
end start ;⑩指明程序入口点start
题目4:
.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
题目5:
;*【*/
.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) ;x<y1
FLD 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
;*】*/