07-082汇编语言程序设计实验指导书(2)

2019-05-17 18:25

《汇编语言程序设计》上机实验指导书

TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。 4.实验准备

(1)预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。 (2)熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。 5.实验步骤

(1)编辑、汇编两个源程序,生成相应的可执行文件(。EXE)

(2)用DEBUG的R 命令,T 命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细过程。 (3)检查程序执行的结果是否正确。 6.实验报告要求

(1)分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。 (2)说明用堆栈传送参数的过程及其具体方法。 (3)分析实验结果及所遇到问题,并说明解决的方法。 7.参考程序清单 (1)码型转换程序清单: ;CONV.ASN

DATA SEGMENT

BUF DB 0ABH,0CDH,0DEH,01H,02H,03H DB 3AH,4BH,5CH,6FH DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV CX,10 LEA BX,BUF AGAIN: MOV AL, [BX] CALL HEXASC INC BX LOOP AGAIN MOV AH,4CH INT 21H

- 6 -

《汇编语言程序设计》上机实验指导书

HEXASC PROC NEAR PUSH AX MOV DL,AL PUSH CX MOV CL,4 SHR DL,CL POP CX

CALL DISP ;显示高位HEX数 POP AX MOV DL,AL AND DL,0FH CALL DISP RET HEXASC ENDP DISP PROC

CMP DL,9 JBE NEXT ADD DL,7 NEXT: ADD DL,30H MOV AH,2

INT 21H ;显示 RET DISP ENDP CODE ENDS

END START

(2)统计并显示键入字符串中某字符的个数 DATA SEGMENT CHAR DB 'b'

BUF DB 50H, ?,50H DUP(?) CRLF DB 0DH,0AH,'$' DATA ENDS MCODE SEGMENT

- 7 -

《汇编语言程序设计》上机实验指导书

ASSUME CS:MCODE, DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,BUF MOV AH,0AH INT 21H LEA DX,CRLF MOV AH,9 INT LEA MOV MOV INC INC MOV MOV PUSH PUSH PUSH CALL MOV MOV INT POP MOV AND CMP JBE ADD NEXT: ADD MOV INT MOV

21H SI,BUF CL, [SI+1]

CH, 0 ;CX中为字符串长度 SI

SI ;SI指向串首址TABLE AL,CHAR

AH,0 ;AX中为待查字符 SI CX

AX ; 参数送堆栈 FAR PTR CHECK DL,CHAR AH,2 21H

AX ;统计个数在AL中 DL,AL DL, 0FH DL,9 NEXT DL,7 DL,30H AH,2

21H ;显示统计个数 AH,4CH

- 8 -

《汇编语言程序设计》上机实验指导书

INT 21H MCODE ENDS SCODE SEGMENT

ASSUME CS:SCODE CHECK PROC FAR PUSH BP MOV BP,SP MOV SI,[BP+10] MOV CX, [BP+8] MOV AX, [BP+6] XOR AH, AH AGAIN: CMP AL,[SI] JNE NEXT1 INC AH NEXT1: INC SI LOOP AGAIN MOV AL, AH MOV [BP+10],AX POP BP RET 4 CHECK ENDP SCODE ENDS

END START

二、本程序的目的在于使读者掌握模块间调用子程序的编写方法. 1.实验目的

(1) 了解多模块程序设计方法。

(2) 学会使用PUBLEC和EXTRN 伪指令解决模块间的符号(如变量名,标号等)通信问题。 2. 实验内容

(1)编写一个子程序,将主程序设定的内存中字符串的小写字母转换成大写字母并显示出来.主程序用另一个模块编写。

(2)编写一个子程序,将主程序指定的字符所在的地址返回给主程序,字符串与主程序在同一个模块。 3.实验准备

- 9 -

《汇编语言程序设计》上机实验指导书

(1)仔细阅读教材中有关模块间通信的方法及模块程序设计的方法。 (2)弄清伪指令PUBLIC及EXTRN的功能及用法。 4.实验步骤

(1)分别对实验1和实验2的主、子模块进行汇编,在连接时,将它们装配成一个以 .EXE为扩展名的可执行文件.观察汇编及连接过程中有无错误. (2)对.EXE 文件进行调试及运行.

(3)将实验1中的原字符串改为由键盘输入,然后由子模块将源串中的小写字母转换为大写字母,并将源串与转换后的两个字串分两行显示出来(设键入字串长度小于80个字符). 5.实验报告要求

(1)对愿程序清单,画出相应的程序流程图. (2)扼要总结多模块程序的特点和编写方法. 6.参考程序清单

(1)转换字符串小写字母为大写字母的程序清单: EXTRN DNTOUP:FAR PUBLIC STRING1,STRING2 DATA SEGMENT

STRING1 DB 'thIs is A book','$' STRING2 DB 80 DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS, AX

CALL FAR PTR DNTOUP MOV AH,4CH INT 21H CODE ENDS

END START

;DNTOUP.SM为子模块的文件名 PUBLIC DNTOUP

EXTRN STRING1:BYTE,STRING2:BYTE CODE SEGMENT

- 10 -


07-082汇编语言程序设计实验指导书(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:正宁四中6月份电动自行车消防安全综合治理工作小结

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

马上注册会员

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