我是靠谱客的博主 悲凉砖头,最近开发中收集的这篇文章主要介绍win32汇编以.386指令的MASM32题目做题记录 -- 子程序,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

//MaxN

.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 s:DWORD,n:DWORD
;LOCAL max:DWORD
MOV ESI,0
MOV EBX,s
MOV EAX,[EBX+ESI*4]
.while ESI < n
INC ESI
.IF EAX < [EBX+ESI*4]
MOV EAX,[EBX+ESI*4]
.ENDIF
.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

//素数

.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 t:DWORD
MOV ECX,2
.while ECX < t
CDQ
MOV EAX,t
IDIV ECX
.IF EDX == 0
invoke printf,ADDR s2
RET
.ENDIF
INC ECX
.endw
invoke printf,ADDR s1
RET
fun ENDP
;*】*/
start:
;定义标号start
invoke scanf,ADDR fmt,ADDR n	;输入n的值
invoke fun,n
invoke ExitProcess,0
;退出进程,返回值为0
end	start
;指明程序入口点start

// strcat

.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 s_1:DWORD,s_2:DWORD
MOV EBX,s_1
MOV EDX,s_2
MOV ECX,0
.while AL != 0
INC ECX
MOV AL,[EBX+ECX]
.endw
MOV AL,[EDX]
DEC ECX
.while AL != 0
MOV AL,[EDX]
MOV [EBX+ECX],AL
INC EDX
INC ECX
.endw
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

**

//MinN

**

.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 s:DWORD,n:DWORD
;LOCAL max:DWORD
MOV EAX,n
SUB EAX,1
MOV n,EAX
MOV ESI,0
MOV EBX,s
MOV EAX,[EBX+ESI*4]
.while ESI < n
INC ESI
.IF EAX > [EBX+ESI*4]
MOV EAX,[EBX+ESI*4]
.ENDIF
.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

//strcpy

.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 s_1:DWORD,s_2:DWORD
MOV EBX,s_2
MOV EAX,s_1
MOV ESI,0
MOV ECX,[EBX+ESI]
.while
ECX != 0
MOV ECX,[EBX+ESI]
MOV [EAX+ESI],ECX
INC ESI
.endw
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

最后

以上就是悲凉砖头为你收集整理的win32汇编以.386指令的MASM32题目做题记录 -- 子程序的全部内容,希望文章能够帮你解决win32汇编以.386指令的MASM32题目做题记录 -- 子程序所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(76)

评论列表共有 0 条评论

立即
投稿
返回
顶部