福建农林大学 - 汇编实验四 - 子程序设计

更新时间:2023-10-09 13:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

福建农林大学计算机与信息学院实验报告

系: 计算机 专业: 计算机科学与技术 年级: 2014 姓名 学号: 实验室号__ 计算机号

实验时间:2016-10-29指导教师签字: 刘庆连 成绩:

实验四 子程序设计

1.实验目的

(1)学习子程序的编写,主子程序的调用; (2)不同模块间程序的调用和调试。

2.实验内容

1)数据段中的3个字符,调用子程序将其逐个显示出来。子程序的功能是显示一个字符。单步执行,对CALL语句和RET语句观察SP,IP的变化,并用D命令查看栈顶的内容。

DATA MAG DATA CODE

SEGMENT DB ‘ABC’ ENDS SEGMENT ASSUME

CS: CODE, DS: DATA

START: MOV

MOV MOV MOV

AX, DATA DS, AX SI, 0 CX, 3

LL:

MOV DL, MAG[SI] CALL MADD INC LOOP MOV INT

SI LL AH, 4CH 21H

MADD PROC

MOV AH, 02H INT RET

21H

MADD ENDP CODE

ENDS END

START

2)阅读S31.ASM和S32.ASM两个模块中的程序,并分别汇编,然后连接成一个可执行文件S31.EXE。 具体步骤如下:

MASM S31.ASM(分别汇编) MASM S32.ASM

LINK S31 S32 (将两个文件连接成为一个文件名为S31) S31.EXE (运行)

3)编程:利用主程序调用子程序,比较BUF1和BUF2缓冲区中不相等的字符,并将不相等的字符显示出来。(也可以将找到的不相等字符逐个显示,用INT 21H的02功能调用)

4)编程:子程序搜索指定字符缓冲区中是否有N,如果有用Y替代。调用子程序将BUF1,BUF2,BUF3中的N全部用Y替代。

附源程序: NAME S31.ASM

不同模块间的段间调用。从键盘输入2位非压缩BCD数,存入AX寄存器中。为了将

其转换为二进制数,编写一个子程序TRAN。显示子程序DISP完成将16进制数转换为对应的ASCII码并显示该字符,显示子程序在另一模块S32中。输入数据为00时结束。

EXTRN DISP: FAR CODE

SEGMENT ASSUME

PARA ‘CODE’ CS: CODE

START: MOV

INT MOV INT MOV MOV CMP JE CALL CALL JMP

AH, 01H 21H BL, AL 21H AH, AL AL, BL AX, 3030H EXIT

NEAR PTR TRAN FAR PTR disp START

EXIT:

MOV AH, 4CH INT PROC AND

21H

NEAR ;将输入的ASCII码转换成2进制数 AX, 0F0FH ;将ASCII码转换成非压缩BCD码,

;高位在AL中

TRAN

MOV MOV MUL ADD RET ENDP ENDS END

BL, AH CL, 10D CL AL, BL

TRAN CODE

START

NAME S32.ASM PUBLIC DISP CODE1 SEGMENT

ASSUME

PARA ‘CODE’ CS: CODE1

DISP PROC FAR

MOV MOV MOV

BL, AL BH, 00 CH, 4 CL, 4 BX, CL DL, BL DL, 0FH DL, 9 NEXT1 DL, 07H DL, 30H AH, 02H 21H CH ROLL

ROLL: MOV

ROL MOV AND CMP JBE ADD

NEXT1: ADD

MOV INT DEC JNZ RET

DISP ENDP

CODE1 ENDS

END

5)编一个子程序:输入一个字符,显示出来。 6)编一个子程序:输入一个字符串,显示出来。

4.算法描述及实验步骤

题1:依题输入相应的代码如下,运行->调试->单步执行,对CALL语句和RET语句观察SP,IP的变化,并用D命令查看栈顶的内容。

题3及4,5,6按要求编写即可

5.调试过程 无 6. 实验结果

【题一】 实验结果如下

有上图可知,当程序运行到call语句之前,SP一直保持0000不变,而IP则一直在增加。继续单步执行程序

由上图,当程序在RET语句之前运行时,SP、IP每次都是分别按2和1递增,当运行到RET语句时,SP还是按照2来递增,而IP出现了变化,这次却减少了很多,说明指针

本文来源:https://www.bwwdw.com/article/t59f.html

Top