东华大学微机原理实验指导书2015(4)

2019-04-09 23:11

CMP AL, MINVAL JE NEXT JG A1

MOV MINVAL, AL JMP NEXT

A1: CMP AL, MAXVAL JL NEXT

MOV MAXVAL, AL NEXT: INC BX DEC CX JNE AGAIN RETF START ENDP CODE ENDS

END START

2)实验步骤

(1)用编辑程序建立源程序文件,文件名自定。

(2)用MASM宏汇编程序和LINK连接程序将源程序文件汇编生成以EXE为扩展名的执行文件。 (3)用DEBUG调试程序将由上产生的EXE可执行文件送入内存,先用反汇编命令检查程序内容和首末地址,然后检查以BUFFER为首址的存储单元中数据块和MINVAL、MAXVAL单元的内容。BUFFER 地址单元的段地址和偏移地址是由系统在汇编和连接时指定的。各个不同的系统都不一样,一般来说,偏移地址为零,段地址可在反汇编程序时,根据指令MOV AX, DATA 对应机器码中DATA的值来确定。

(4)在DEBUG下运行程序,检查运行结果。

(5)修改源程序中BUFFER数据区的各数据,重新汇编后再运行,检查结果。

3、从无序数列中删除一个元素

1)实验内容

在BUFFER为首址的内存区中存放了一个无序字符串,其长度存放在第一个字节单元,在KEY单元内存放了要删除的一个字符,查找此无序字串,若找到则删除并作相应调整,若字串中无此字符则在FLAG单元内置FFH标志。其程序流程图如下。

2)实验步骤

(1)按以上框图编写程序,并任意设定字符个数和字符串。 (2)输入汇编语言源程序,文件名自定。

(3)用MASM和LINK程序汇编和连接生成EXE执行程序。 (4)运行该程序,并检查结果。

(5)修改字符串及其个数,再运行程序,验证程序的正确性。

16

设地址指针, 取串长度?CX KEY内容?AL 搜索字串 找到否? N Y CX—1 串搜索 N 完否? 以要删除的数据的地址 为目的地址,下一个数 Y 据的地址为源地址,以 剩下的数据个数为传送 置 次数进行传送 FLAGE单元 返回 4、思考题

① 计算机钢琴程序中,INT 21 的作用是什么?指令DIV WORD PTR[TABLE+BX]中为什么要用操作符WORD PTR?延时子程序DELAY中为什么要把AX、CX压入栈?

② 在求最大和最小值的程序中,有指令MOV MINVAL,AL和MOV MAX MAXVAL,AL将第一个数存入这两个单元,可以用哪两个立即数直接存入这两个单元也可达到同样效果? ③ 若求无符号数据块的最大和最小值,那么程序要作哪些修改? ④ 删除一个升序或降序字符串中一个字符时,程序应如何修改可使在找不到这个字符时搜集次数减少?

四、实验报告要求

1.对所有程序写上较详细的注释。 2.整理出实验中数据和运行结果。

3.总结DEBUG程序、MASM宏汇编、LINK连接程序的调试程序的方法和经验。 4.根据思考题写出答案和运行结果。

17

实验三 DOS系统功能调用及模块化程序设计

一、实验目的

2、 熟悉DOS系统中基本功能子程序的作用及其调用方法。

3、 结合DOS系统中键盘和显示功能子程序的调用和汇编语言源程序结构设计有关程序。 4、 掌握复杂程序的设计思想—模块化程序设计的方法。

二、实验设备

PC机一台,装有DOS基本系统和MASM宏汇编软件。

三、实验内容及步骤

(一)DOS键盘、显示基本功能子程序调用

DOS提供了许多系统功能子程序可由程序设计者调用,其中最基本的是键盘和显示操作功能的调用,具体调用的方法可参阅教科书。

1、 显示缓冲区的字符串 1)实验程序: DSEG SEGMENT STRING DB ‘Welcome to DONG HUA University!’,0dH,0aH,’$’ DSEG ENDS STACK SEGMENT PARA STACK ‘STACK’ DB 256 DUP (?) STACK ENDS CSEG SEGMENT MAIN PROC FAR ASSUME CS: CSEG, DS: DSEG SS: STACK START: PUSH DS MOV AX, 0 PUSH AX MOV AH, 9 MOV DX, SEG STRING MOV DS, DX MOV DX, OFFSET STRING INT 21H RET

18

MAIN ENDP CSEG ENDS END START 2) 实验步骤: (1)建立源程序文件。

(2)用MASM宏汇编程序和LINK连接程序生成执行程序。 (3)运行执行程序,输入不同字母,观察结果。

2、键盘输入小写字母,显示器显示大写字母 1)实验程序:

CSEG SEGMENT MAIN PROC FAR ASSUME CS:CSEG START:PUSH DS MOV AX, 0 PUSH AX BEGIN: MOV AH,1

INT 21H

CMP AL, ‘a’ JB STOP CMP AL, ‘z’ JA STOP SUB AL, 20H MOV DL, AL MOV AH, 2 INT 21H JMP BEGIN STOP: RET MAIN ENDP CSEG ENDS END START

2) 实验步骤: (1)建立源程序文件。

(2)用MASM宏汇编程序和LINK连接程序生成执行程序。 (3)运行执行程序,输入不同字母,观察结果。

3、从键盘输入一个二位十进制的月份数(01-12),显示相应月份的英文缩写名

1)程序及其结构

程序采用子程序的结构形式,子程序有:将输入的二位月份数转换为二进制数的子程序;从字符

19

表中查找相应的英文缩写的子程序;将月份的英文字母显示在屏幕上的子程序。 程序如下: DATASG THREE MONIN ALFMON MONTAB DATASG CODESG MAIN MAIN INPUT RETURN: INPUT:

SEGMENT PARA ‘DATA’ DB 3 DB 3,4 DUP(?) DB ‘???’,’$’ DB ‘JAN’,’FEB’,’MAR’,’APR’,’MAY’,JUN’ DB ‘JUL’,’AUG’,’SEP’, ’OCT’,’NOV’,’DEC’ ENDS SEGMENT PARA ‘CODE’ ASSUME CS:CODESG,DS:DATASG PROC FAR PUSH DS SUB AX, AX PUSH AX

MOV AX, DATASG

MOV DS, AX MOV ES, AX CALL INPUT CALL LOCATE CALL DISPLAY RET ENDP PROC NEAR ; 键盘输入并将ASCⅡ码转换二进制数的子程序PUSH DX MOV AH, 0AH ; 键盘输入月份数 LEA DX, MONIN INT 21H MOV AH, MONIN+2 ; 将月份数字的ASCⅡ码取入AH和AL MOV AL, MONIN+3 XOR AX, 3030H ; 将ASCⅡ码转换为BCD码 CMP AH, 00 JZ RETURN SUB AH, AH ADD AL, 10 POP DX RET ENDP 20


东华大学微机原理实验指导书2015(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成本会计配套练习题答案1

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

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