ReadChar al ; press any key to continue exit 0 end start
2. 有一个首地址为BUFFER 的N 字节数组,用冒泡排序法使该数组中的数从小到大排序。 3. 显示九九表。
include io32.inc .data
.code start:
mov bh,1 w:
cmp bh,9 ja over mov bl,1 n:
mov al,bh mul bl cmp al,10 jae next WriteChar \ next:
WriteUDecByte al WriteChar \ inc bl cmp bl,bh jna n
WriteCrlf inc bh jmp w over:
ReadChar al ; press any key to continue exit 0 end start 三)实验要求
编写1和3题的流程,记录程序,分析算法。-
实验六、子程序设计和宏
一)实验目的
通过本实验,掌握子程序的定义和调用方法。通过程序调试,进一步理解CALL 指令和RET指令的功能,掌握子程序调用时参数传递的方法。 二)实验内容
1. 十进制到二进制数转换。从键盘取得一个十进制数,将其以二进数形式显示出来。要求定义回车换行子
18
程序、从键盘获得十进制数(0~128 之间),并存放在BL 中的子程序,用二进制显示BL 中数据的子程序。
2. 利用递归程序,计算N!,递归子程序入口参数AL(=N),出口参数DX=(N!)。 3. 求 s=fact(α) + fact(b),fact表示阶乘 ;调用子程序方式 include io32.inc .data
a dd 0 b dd 0 s dw 0
.code start:
ReadUDecDword a ReadUDecDword b
mov ecx,a call fact mov s,ax
mov ecx,b call fact add s,ax
WriteUDecWord s
ReadChar al exit 0
;假设8以内阶乘,入口参数:ECX
fact proc
MOV AX,1 A:
MUL CX LOOP A ret
fact endp
end start ;调用宏方式
include io32.inc
AX 19
出口参数: .data
a dd 0 b dd 0 s dw 0
.code
jiecheng macro n
mov ecx,n
call fact endm start:
ReadUDecDword a ReadUDecDword b
jiecheng (a) mov s,ax
jiecheng b add s,ax
WriteUDecWord s
ReadChar al exit 0
;假设8以内阶乘,入口参数:ECX
fact proc
MOV AX,1 A:
MUL CX LOOP A ret
fact endp
end start
AX 20
出口参数:
三)实验要求
记录实验数据,编程实现实验内容1,绘制流程图。
实验七、 综合实验
一)实验目的
进一步加强对汇编程序设计的理解。 二)实验内容
1.采用交换法实现数据排序。 ; Win32 Consol .exe
include io32.inc .data
;add your data here
A DW 12,45,3,47,88,23,44,56,8,33 jieguo db \ .code start:
; add your code here mov esi,0
MOV ECX,LENGTHOF A aa:
WriteUDecWord A[ESI*(type A)] WriteChar ' ' INC ESI LOOP aa
WriteCrlf
WriteString jieguo
MOV ECX,LENGTHOF A dec ecx MOV ESI,0 W:
CMP ESI,ECX JA OVER
MOV EDI,ESI INC EDI
N: CMP EDI,ECX JA NEXT
21
MOV BX,A[ESI*(TYPE A)] MOV DX,A[EDI*(TYPE A)] CMP BX,DX JNA NEXT1 XCHG BX,DX
MOV A[ESI*(TYPE A)],BX MOV A[EDI*(TYPE A)],DX NEXT1: INC EDI
JMP N NEXT:
WriteUDecWord A[ESI*(type A)] WriteChar ' ' INC ESI JMP W OVER:
ReadChar al ; press any key to continue exit 0 end start
2、实现打字母程序
;MASMPlus 代码模板 - 控制台程序
.386
.model flat, stdcall option casemap :none
include windows.inc include user32.inc include kernel32.inc include masm32.inc include gdi32.inc include io32.inc
includelib gdi32.lib includelib user32.lib includelib kernel32.lib includelib masm32.lib include macro.asm .data
string1 db 'wcw adar is not too difficult a thing for the ordinary man in the street to under-stand. All of us have heard echoes'
db 'we speak in a large hall or before a wall ofrock, and our voices come back to us, echoed by the hard substance which they',0 h db 0
22