实验4 排序和检索程序设计

时间:2025-06-23

汇编实验,排序和检索程序设计

实验4 排序和检索程序设计

编写程序1:将内存中10个无符号数(长度为2字节)由小到大排序。

编写程序2:在上述已排好序的数据区里查找某一个数。若找到,显示其在数据区中的位置,否则显示‘N’字符。

编写主程序,通过调用程序1和程序2,实现排序和检索。 【编程参考】

1.子程序1流程图(选择排序法,见图)

说明:

N:数据个数 A:有序数组首地址 CX:内外循环计数 DX:暂存外循环计数 BX、BX+SI+2:数组元素相对偏移 下标

2.子程序2流程图(折半查找法,见图3-2)

说明:

A:有序数组首地址 KEY:查找关键字 DH:查找区间上限 DL:查找区间下限 CH:查找区间中间值 DI:存放查找关键字 SI:数组元素相对偏移

图 实验4程序1流程图

汇编实验,排序和检索程序设计

实验5 系统调用程序设计

编程1:将内存中的一串字符输出,再从键盘上输入一串字符,再输出。编写出源程序。 编程2:在屏幕中间部位开出一个窗口,随后接收用户按键,并把按键字符显示在窗口的最底行;当窗口底行显示满时,窗口内容就自动向上滚动一行;用户按Ctrl+C键时,结束运行。

程序5_1:字符串输入输出程序清单

; 程序名:ZHSY4_2_1 DATA A B

SEGMENT DB DB DB ENDS SEGMENT

ASSUME CS:CODE,DS:DATA MOV MOV MOV LEA INT LEA MOV INT MOV

MOV INT MOV MOV MOV MOV MOV MOV MOV INT MOV INT ENDS END

START AX, DATA DS, AX AH, 09H DX, A 21H DX, B AH, 0AH 21H DL, 0AH AH, 02H 21H AL, B+1 AH, 0 SI, AX BX, DX

BYTE PTR [BX+SI], ‘$’ ; 末尾添‘$’以便输出 AH, 09H 21H AH, 4CH 21H

; 字符个数值存SI

DX, OFFSET B+2

; 键盘输入的字符个数送AL

; 输出换行

‘How do you do?’,0AH,0DH ‘$’

20,?,20 DUP(?)

DATA CODE

START:

CODE

程序5_2:窗口字符显示程序清单

; 程序名:ZHSY4_2_2 ; 常量定义 WINWIDTH WINTOP

= =

40 8

; 窗口宽度 ; 窗口左上角行号

汇编实验,排序和检索程序设计

WINLEFT WINRIGHT COLOR PAGEN CODE CTRL_C

= = = = =

20 17

; 窗口左上角列号 ; 窗口右下角行号 ; 属性值 ; 显示页号 ; 结束符ASCII码

WINBOTTOM =

WINLEFT+WINWIDTH-1 ; 窗口右下角列号 74H 0

03H

SEGMENT

ASSUME CS:CODE START:

MOV MOV INT MOV MOV MOV MOV MOV MOV MOV INT MOV MOV MOV MOV MOV INT NEXT:

MOV INT CMP JE

MOV MOV MOV INT INC CMP JNE MOV MOV MOV MOV MOV MOV MOV

INT

AL, PAGEN

; 选择显示页

AH, 5 10H

CH, WINTOP ; 清规定窗口 CL, WINLEFT DH, WINBOTTOM DL, WINRIGHT BH, COLOR AL, 0 AH, 6 10H BH, PAGEN

; 定位光标到窗口左下角

DH, WINBOTTOM

DL, WINLEFT BH, COLOR AH, 2 10H AH, 0

; 接受一个键 16H

AL, CTRL_C ; 是否结束键

EXIT BH, PAGEN

; 在当前光标位置显示所按键 CX, 1 AH, 0AH 10H DL

; 光标列数加1,准备向右移动光标

DL, WINRIGHT+1 ; 是否越出窗口右边界

SETCUR CH, WINTOP ; 窗口内容上移一行 CL, WINLEFT ; 空出窗口的最底行

DH, WINBOTTOM DL, WINRIGHT BH, COLOR AL, 1 AH, 6 10H

汇编实验,排序和检索程序设计

MOV MOV MOV INT JMP MOV INT ENDS END

DL, WINLEFT BH, PAGEN AH, 02H 10H NEXT AH, 4CH 21H START

; 光标要回到最左面 ; 置光标

SETCUR:

EXIT: CODE

实验6 模块化程序设计

主模块A编程:设计一个能实现加、减、乘、除计算的程序,要求该程序接受从键盘输入的两个十六进制数,调用相应的程序模块执行相应的计算后,计算结果以十六进制数输出。

模块B编程:实现两个十六进制数相加。 模块C编程:实现两个十六进制数相减。 模块D编程:实现两个十六进制数相乘。 模块E编程:实现两个十六进制数相除。

模块A程序(主程序)

; 程序名:ZHSY4_3_A.ASM

; 功能:显示菜单,接受从键盘输入的两个十六进制数,

; 调用相应的程序模块执行相应的计算,计算结果以十六进制数输出。 DATA STR0 N

SEGMENT PARA PUBLIC ‘DATA’ DB EQU DB DB DB DB DB DB DB DB DB DB DB DB DB DW

$-STR0

; 数据段为PUBLIC型,便于其他模块应用 ; N为字符串STR0的长度

‘ Arithmetic Proram ’,0DH,0AH,‘$’ ‘***********************’,0DH,0AH ,‘$’ ‘ 1. Addition ’,0DH,0AH,‘$’ ‘ 2. Subtration ’,0DH,0AH,‘$’ ‘ 3. Multiplication ’,0DH,0AH,‘$’ ‘ 4. Division ’,0DH,0AH,‘$’ ‘ 0. Exit ’,0DH,0AH,‘$’ ‘***********************’,0DH,0AH,‘$’ ‘ Input your choice: ’,‘$’

0DH,0AH, ‘Input error, again enter: ’,‘$’ 0DH,0AH, ‘Input a hex number: ’,‘$’ 0DH,0AH, ‘Input a hex number again: ’,‘$’ 0DH,0AH, ‘The operation result is: ’,‘$’ ?, ? ?

; 存用户输入的两个8位二进制数据 ; 存16位运算结果数据

ERROR STR1 STR2 STR3 INA OUTA

汇编实验,排序和检索程序设计

STR DATA EXTRN EXTRN EXTRN EXTRN EXTRN EXTRN CODE

START: OP0: OP1: MENU:

DB ENDS

4 DUP(?), 0DH, 0AH, ‘$’

PUBLIC STR1, STR2, STR3, INA, OUTA, STR ; 声明公共标识符

INNUM: NEAR OUTNUM:NEAR ADDOPT: NEAR SUBOPT: NEA …… 此处隐藏:9907字,全部文档内容请下载后查看。喜欢就下载吧 ……

实验4 排序和检索程序设计.doc 将本文的Word文档下载到电脑

    精彩图片

    热门精选

    大家正在看

    × 游客快捷下载通道(下载后可以自由复制和排版)

    限时特价:7 元/份 原价:20元

    支付方式:

    开通VIP包月会员 特价:29元/月

    注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
    微信:fanwen365 QQ:370150219