编一函数MaxN(int a
[],int n
)用于求n个元素的数组a中的最大元素。
运行后输入
:
1 3 4 5 2
则结果输出
:
最大值为
5
运行后输入
:
1 3 6 4 5 2
则结果输出
:
最大值为
6
.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
;⑤数据段
Infmt
BYTE '%d',0
Outfmt
BYTE '最大值为%d',0
a
DWORD 80 Dup(0) ;定义数组a
.code
;⑥代码段
;*【
*/
MaxN proc x
:dword
,y
:dword
mov esi
,0
mov ebx
,x
mov eax
,[ebx
+esi
*4]
.while esi
<y
.if eax
<[ebx
+esi
*4]
mov eax
,[ebx
+esi
*4]
.endif
inc esi
.endw
ret
MaxN endp
;*】
*/
start
: ;定义标号start
mov
ESI,0
invoke scanf
,ADDR Infmt
,ADDR a
[ESI*4];输入a
[i
]的值
.while EAX==1
INC ESI
invoke scanf
,ADDR Infmt
,ADDR a
[ESI*4];
.endw
invoke MaxN
,ADDR a
,ESI ;求a数组和通过
EAX返回
invoke printf
,ADDR Outfmt
,EAX;输出结果
invoke ExitProcess
,0 ;退出进程,返回值为
0
end start
;指明程序入口点start
编一函数MinN(int a
[],int n
)用于求n个元素的数组a中的最小元素。
运行后输入
:
1 3 4 5 2
则结果输出
:
最小值为
1
运行后输入
:
7 3 6 4 5 8
则结果输出
:
最小值为
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
;⑤数据段
Infmt
BYTE '%d',0
Outfmt
BYTE '最小值为%d',0
a
DWORD 80 Dup(0) ;定义数组a
.code
;⑥代码段
;*【
*/
MinN proc aa
:dword
,n
:dword
mov esi
,0
mov ebx
,aa
mov eax
,[ebx
+esi
*4]
.while esi
<n
.if eax
>[ebx
+esi
*4]
mov eax
,[ebx
+esi
*4]
.endif
inc esi
.endw
ret
MinN endp
;*】
*/
start
: ;定义标号start
mov
ESI,0
invoke scanf
,ADDR Infmt
,ADDR a
[ESI*4];输入a
[i
]的值
.while EAX==1
INC ESI
invoke scanf
,ADDR Infmt
,ADDR a
[ESI*4];
.endw
invoke MinN
,ADDR a
,ESI ;求a数组和通过
EAX返回
invoke printf
,ADDR Outfmt
,EAX;输出结果
invoke ExitProcess
,0 ;退出进程,返回值为
0
end start
;指明程序入口点start
编一串拷贝子程序
,实现
C语言char
* strcpy(char
*Dst
,char
*Src
)函数,
然后主程序调用strcpy(s1
,s2
)实现s2串拷贝到s1串。
运行后输入
:
ABCD
则结果输出
:
ABCD
.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 '%s',0 ;定义变量
s1
BYTE 80 Dup(0)
s2
BYTE 80 Dup(0)
.code
;⑥代码段
;*【
*/
strcpy proc x
:dword
,y
:dword
mov esi
,y
mov edi
,x
;y
-> x
mov ecx
,80
rep movsb
ret
strcpy endp
;*】
*/
start
: ;定义标号start
invoke scanf
,ADDR fmt
,ADDR s2
;输入s2的值
invoke strcpy
,ADDR s1
,ADDR s2
;求s2串拷贝到s1串
invoke printf
,ADDR fmt
,ADDR s1
;输出
invoke ExitProcess
,0 ;退出进程,返回值为
0
end start
;指明程序入口点start
编一串连接子程序
,实现
C语言char
* strcat(char
*Dst
,char
*Src
)函数,
然后主程序调用strcat(s1
,s2
)实现s2串追加(连接
)到s1串。
运行后输入
:
AB CD
则结果输出
:
ABCD
.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
;⑤数据段
fmt1
BYTE '%s %s',0 ;定义变量
fmt2
BYTE '%s',0
s1
BYTE 80 Dup(0)
s2
BYTE 80 Dup(0)
.code
;⑥代码段
;*【
*/
strcat proc x
:dword
,y
:dword
mov esi
,y
mov edi
,x
mov eax
,0
.while byte ptr
[edi
]!=0
inc edi
.endw
.while byte ptr
[esi
]!=0
inc esi
add eax
,1
.endw
cld
mov esi
,y
mov ecx
,eax
rep movsb
ret
strcat endp
;*】
*/
start
: ;定义标号start
invoke scanf
,ADDR fmt1
,ADDR s1
,ADDR s2
invoke strcat
,ADDR s1
,ADDR s2
;求s2串连接到s1串
invoke printf
,ADDR fmt2
,ADDR s1
;输出
invoke ExitProcess
,0 ;退出进程,返回值为
0
end start
;指明程序入口点start
编一函数fun(int n
)用于判断整数n是否是素数。
运行后输入
:
5
则结果输出
:
是素数
运行后输入
:
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 ;定义变量
fmt2
BYTE '%s',0 ;定义变量
n
DWORD 0
s1
BYTE '是素数',0
s2
BYTE '不是素数',0
.code
;⑥代码段
;*【
*/
fun proc x
:dword
.if x
==2||x
==1
invoke printf
,addr fmt2
,addr s1
.else
mov esi
,1
mov edi
,2
.while edi
<x
mov eax
,x
cdq
idiv edi
.if edx
==0
mov esi
,0
.endif
inc edi
.endw
.if esi
==0
invoke printf
,addr fmt2
,addr s2
.else
invoke printf
,addr fmt2
,addr s1
.endif
.endif
ret
fun endp
;*】
*/
start
: ;定义标号start
invoke scanf
,ADDR fmt
,ADDR n
;输入n的值
invoke fun
,n
invoke ExitProcess
,0 ;退出进程,返回值为
0
end start
;指明程序入口点start