2022年2022年汇编语言-子程序设计 .pdf

上传人:C****o 文档编号:32074223 上传时间:2022-08-08 格式:PDF 页数:11 大小:337.41KB
返回 下载 相关 举报
2022年2022年汇编语言-子程序设计 .pdf_第1页
第1页 / 共11页
2022年2022年汇编语言-子程序设计 .pdf_第2页
第2页 / 共11页
点击查看更多>>
资源描述

《2022年2022年汇编语言-子程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言-子程序设计 .pdf(11页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、1 福建农林大学计算机与信息学院(程序设计类课程)实验报告课程名称:汇编语言姓名:系:计算机系专业:计算机专业年级:09 级学号:指导教师:职称:2011 年12 月 30 日名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 1 页,共 11 页 - - - - - - - - - 2 实验项目列表序号实验项目名称成绩指导教师1 汇编程序的汇编及执行张旭玲2 DEBUG 的使用(顺序执行程序)张旭玲3 程序的调试与纠错(循环语句)张旭玲4 DOS 功能调用张旭玲5 子程序张旭玲6 串操

2、作张旭玲7 8 9 10 11 12 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 2 页,共 11 页 - - - - - - - - - 3 福建农林大学计算机与信息学院实验报告系:计算机专业:计算机科学与技术年级: 2009 姓名:学号:实验室号田 507 计算机号 79 实验时间:11.11.29指导教师签字:成绩:实验五子程序设计一、 实验目的(1)学习子程序的编写,主子程序的调用;(2)不同模块间程序的调用和调试。二、 实验内容1)数据段中3 个字符, 调用子程序将其逐

3、个显示出来。子程序的功能是显示一个字符。单步执行,对CALL 语句和 RET 语句观察SP,IP 的变化,并用D 命令查看栈顶的内容。DATA SEGMENT MAG DB ABC DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DA TA START: MOV AX, DA TA MOV DS, AX MOV SI, 0 MOV CX, 3 LL: MOV DL, MAGSI CALL MADD INC SI LOOP LL MOV AH, 4CH INT 21H MADD PROC MOV AH, 02H INT 21H RET 名师资料总结 - -

4、 -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 3 页,共 11 页 - - - - - - - - - 4 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 和 B

5、UF2 缓冲区中不相等的字符,并将不相等的字符显示出来。(也可以将找到的不相等字符逐个显示,用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 COD

6、E SEGMENT PARA CODE ASSUME CS: CODE START: MOV AH, 01H INT 21H MOV BL, AL INT 21H MOV AH, AL MOV AL, BL CMP AX, 3030H JE EXIT CALL NEAR PTR TRAN CALL FAR PTR disp JMP START 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 4 页,共 11 页 - - - - - - - - - 5 EXIT: MOV AH, 4C

7、H INT 21H TRAN PROC NEAR ;将输入的ASCII 码转换成 2 进制数AND AX, 0F0FH ;将 ASCII 码转换成非压缩BCD 码,;高位在AL 中MOV BL, AH MOV CL, 10D MUL CL ADD AL, BL RET TRAN ENDP CODE ENDS END START NAME S32.ASM PUBLIC DISP CODE1 SEGMENT PARA CODEASSUME CS: CODE1 DISP PROC FAR MOV BL, AL MOV BH, 00 MOV CH, 4 ROLL: MOV CL, 4 ROL BX,

8、CL MOV DL, BL AND DL, 0FH CMP DL, 9 JBE NEXT1 ADD DL, 07H NEXT1: ADD DL, 30H MOV AH, 02H INT 21H DEC CH JNZ ROLL RET 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 5 页,共 11 页 - - - - - - - - - 6 DISP ENDP CODE1 ENDS END三、 实验环境计算机四、 实验步骤及运行结果1) 单步执行程序,如下:从实验结果中可以看出,当程

9、序运行到call语句之前, SP一直保持 0000 不变,而 IP 则一直在增加。继续单步执行程序:从上图中可以看出,当程序在RET语句之前欲行时, SP 、IP 每次都是分别按名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 6 页,共 11 页 - - - - - - - - - 7 2 和 1 递增,当运行到 RET语句时,SP海事按照 2 来递增,而 IP 出现了变化,这次却减少了很多,说明指针回撤执行下一个循环。用 D命令查看栈顶内容:出来、从结果中可以看到,栈顶的内容为A。

10、程序全部执行后的结果为:2)编辑 s31和 s32文件,输入程序,保存。分别编译上s31 和 s32文件。链接 s31和 s32文件:无错误输出,运行程序:输入“ 10” ,输出: 10000A 按“00”结束,退出运行。3)编写程序如下:data segment buf1 db aabbccvvxx$ buf2 db aabccvvvxz$ buf3 db 20 dup(?) data ends 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 7 页,共 11 页 - - - -

11、- - - - - 8 code segment assume cs:code,ds:data start:mov ax,data mov ds,ax mov si,0 mov di,0 call bijiao lea dx,buf3 mov ah,09h int 21h mov ax,4c00h int 21h bijiao proc mov al,si cmp al,$ je exit mov ah,buf2si cmp al,ah je next mov buf3di,al mov buf3di+1,ah add di,2 next:inc si jmp bijiao exit:mov

12、buf3di,al ret bijiao endp code ends end start 运行输出结果为 bccvxz,如下图:4)编写程序如下:data segment buf1 db AANAAAAANAAAAANAAA$ buf2 db AAANAAANAAAAAAANAA$ buf3 db ANAANAAAAANAANAANA$ buf4 db The buf1 first is:,0ah,0dh,$ buf5 db 0ah,0dh,The buf1 now:,0ah,0dh,$ buf6 db 0ah,0dh,The buf2 first is:,0ah,0dh,$ buf7 db

13、 0ah,0dh,The buf2 now:,0ah,0dh,$ buf8 db 0ah,0dh,The buf3 first is:,0ah,0dh,$ 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 8 页,共 11 页 - - - - - - - - - 9 buf9 db 0ah,0dh,The buf3 now:,0ah,0dh,$ data ends code segment assume cs:code,ds:data start:mov ax,data mov ds,

14、ax mov si,0 push si lea dx,buf4 mov ah,09h int 21h lea dx,buf1 mov ah,09h int 21h add si,offset buf1 call sort lea dx,buf5 mov ah,09h int 21h lea dx,buf1 mov ah,09h int 21h pop si push si lea dx,buf6 mov ah,09h int 21h lea dx,buf2 mov ah,09h int 21h add si,offset buf2 call sort lea dx,buf7 mov ah,09

15、h int 21h lea dx,buf2 mov ah,09h int 21h pop si push si lea dx,buf8 mov ah,09h 名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 9 页,共 11 页 - - - - - - - - - 10 int 21h lea dx,buf3 mov ah,09h int 21h add si,offset buf3 call sort lea dx,buf9 mov ah,09h int 21h lea dx,buf

16、3 mov ah,09h int 21h pop si mov ax,4c00h int 21h sort proc ;push ax mov al,si cmp al,$ je exit cmp al,N jne gert mov byte ptr si,Y gert: inc si jmp sort exit:;pop ax ret sort endp code ends end start 运行输出:名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 10 页,共 11 页 - - - - - - - - - 11 五、 总结通过本次上机实验, 学会了子程序的编写和主子程序的调用,并且掌握了在不同模块间程序的调用和调试。 在本次实验中, 再一次加深了对汇编程序的汇编以及连接运行的方法。名师资料总结 - - -精品资料欢迎下载 - - - - - - - - - - - - - - - - - - 名师精心整理 - - - - - - - 第 11 页,共 11 页 - - - - - - - - -

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁