2022年2022年汇编语言实验报告模块化程序设计 .pdf

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

《2022年2022年汇编语言实验报告模块化程序设计 .pdf》由会员分享,可在线阅读,更多相关《2022年2022年汇编语言实验报告模块化程序设计 .pdf(11页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、汇 编 语 言 实 验 报 告Assembly Language Programming Lab Reports_ 班级:姓名:学号:实验日期:学院:专业:实验顺序:原创:_ 实验名称:模块化程序设计实验分数:_ 考评日期:_ 指导教师:_ 一实验目的1、掌握宏定义的相关内容。(1)伪指令:MACRO,ENDM。(2)掌握宏定义时的哑元,变元,&分割符的使用。变元可以是操作数,操作码,操作码的一部分和&联合使用,存储单元,字符串。(3)掌握宏调用时的实元和宏的展开。2.掌握宏运算(1)&替换运算符(2)传递运算符(3)!转义运算符号(4)%表达式运算符(5);宏注释符3、其它宏功能(1)宏标号

2、 LOCAL(2)宏删除 purge(3)宏嵌套,宏展开中的数字1代表插入的程序是宏定义实体中的。宏嵌套在展开时里层被嵌套调用的宏会显示嵌套调用的层次,待验证。(4)宏库的建立和调用4、结构伪操作(1)结构定义结构名 STRUG 结构体结构名 ENDS(2)结构预置(3)结构引用5、重复汇编和条件汇编。6、多模块结构程序设计(1)全局符号定义 PUBLIC 名师资料总结-精品资料欢迎下载-名师精心整理-第 1 页,共 11 页 -(2)外部符号说明 EXTRN(3)段属性与段组合(4)参数传递7、宏指令和子程序的区别(1)工作方式的区别,在多次调用时,使用宏指令占用较大空间但速度较快。使用子程

3、序占用空间小但执行时间长。(2)参数传递的方便性。(3)参数的多样性和灵活性,宏指令的实参数可以是常数,寄存器,内存变量,操作码或操作码的一部分,操作数的一部分等,子程序是不可以比拟的。鉴于以上区别,编程时应该扬长避短地使用宏指令和子程序,通常宏指令被用在代码较短且参数较多的场合,子程序被用在代码较长的场合。8、模块连接(1)外部引用与全局符号说明(2)使用公用数据段实现通信过程段定义伪指令在定义组合类型时定义为COMMON类型,这样在连接时会把多个程序的同名数据段连接时重叠形成一个段,产生段覆盖。允许各模块使用不同的变量名,但是主模块和子模块的数据在定义这些变量上应当有对应的结构。(3)使用

4、寄存器或者堆栈实现过程通信。_二实验环境操作系统:windows 8 编译程序:masm 5.0 _三实验原理1、宏库的建立和调用2、多模块结构程序设计_四实验步骤及结果分析1、宏库的建立和调用宏库的建立:;8-1.mac input macro mov ah,01h int 21h endm output macro x mov dl,x 名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 11 页 -mov ah,02h int 21h endm retsys macro mov ah,4ch int 21h endm addi macro x1,x2,result mov ax

5、,x1 add ax,x2 mov result,ax endm str_mov macro opr1,opr2,opr3 mov cx,opr1 lea si,opr2 lea di,opr3 cld rep movsb Endm 主程序:include 8-1.mac.model small.stack 100h data segment x db 33h,34h y dw?mess1 db 1,2,3,4,5,6,7,8,9,0 mess2 db 10 dup(?)data ends code segment assume cs:code,ds:data start:mov ax,dat

6、a mov ds,ax str_mov 10,mess1,mess2 名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 11 页 -str_mov 2,x,y input sub al,20h output al addi 34,25,y retsys code ends end start LST文件:Microsoft(R)Macro Assembler Version 5.00 5/23/15 10:51:45 Page 1-1 include 8-1.mac C input macro C mov ah,01h C int 21h C endm C C output mac

7、ro x C mov dl,x C mov ah,02h C int 21h C endm C C retsys macro C mov ah,4ch C int 21h C endm C C addi macro x1,x2,result C mov ax,x1 C add ax,x2 C mov result,ax C endm C C str_mov macro opr1,opr2,opr3 名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 11 页 -C mov cx,opr1 C lea si,opr2 C lea di,opr3 C cld C rep movsb C

8、endm .model small 0100.stack 100h 0000 data segment 0000 33 34 x db 33h,34h 0002?y dw?0004 01 02 03 04 05 06 07 mess1 db 1,2,3,4,5,6,7,8,9,0 08 09 00 000E 000A mess2 db 10 dup(?)?0018 data ends 0000 code segment assume cs:code,ds:data 0000 start:0000 B8-R mov ax,data 0003 8E D8 mov ds,ax str_mov 10,

9、mess1,mess2 0005 B9 000A 1 mov cx,10 0008 8D 36 0004 R 1 lea si,mess1 000C 8D 3E 000E R 1 lea di,mess2 0010 FC 1 cld 0011 F3/A4 1 rep movsb Microsoft(R)Macro Assembler Version 5.00 5/23/15 10:51:45 Page 1-2 str_mov 2,x,y 0013 B9 0002 1 mov cx,2 0016 8D 36 0000 R 1 lea si,x 名师资料总结-精品资料欢迎下载-名师精心整理-第 5

10、 页,共 11 页 -001A 8D 3E 0002 R 1 lea di,y 001E FC 1 cld 001F F3/A4 1 rep movsb input 0021 B4 01 1 mov ah,01h 0023 CD 21 1 int 21h 0025 2C 20 sub al,20h output al 0027 8A D0 1 mov dl,al 0029 B4 02 1 mov ah,02h 002B CD 21 1 int 21h addi 34,25,y 002D B8 0022 1 mov ax,34 0030 05 0019 1 add ax,25 0033 A3 0

11、002 R 1 mov y,ax retsys 0036 B4 4C 1 mov ah,4ch 0038 CD 21 1 int 21h 003A code ends end start Microsoft(R)Macro Assembler Version 5.00 5/23/15 10:51:45 Symbols-1 Macros:N a m e Lines ADDI.3 INPUT .2 OUTPUT.3 RETSYS.2 STR_MOV .5 Segments and Groups:N a m e Length Align Combine Class CODE.003A PARA NO

12、NE DATA.0018 PARA NONE DGROUP.GROUP 名师资料总结-精品资料欢迎下载-名师精心整理-第 6 页,共 11 页 -_DATA .0000 WORD PUBLIC DATA STACK .0100 PARA STACK STACK _TEXT .0000 WORD PUBLIC CODE Symbols:N a m e Type Value Attr MESS1 .L BYTE 0004 DATA MESS2 .L BYTE 000E DATA Length=000A START .L NEAR 0000 CODE X .L BYTE 0000 DATA Y .L

13、 WORD 0002 DATA CODE .TEXT _TEXT CODESIZE .TEXT 0 DATASIZE .TEXT 0 FILENAME .TEXT 8-1 52 Source Lines 73 Total Lines 24 Symbols 51176+448984 Bytes symbol space free 0 Warning Errors 0 Severe Errors 2、将给出的代码8-6.asm 用模块化程序设计的方法实现,实现的功能是对输入的多个带符号数,用补码做连续相加运算,按其它字符退出。运算结果分别用二进制和十六进制,十进制显示,用十进制显示,当结果为负时,

14、要用-显示。;8-2a.asm extrn subr1:far public sign include 8-2.mac;宏库data segment summ dw 0 sign db 0 mess1 db 0dh,0ah,input dec=$mess2 db 0dh,0ah,summ binary=$mess3 db 0dh,0ah,summ HEX=$mess4 db 0dh,0ah,summ decimal=$coup dw?bin db 01;二进制 ASCII 码hex db 0123456789ABCDEF;十六进制ASCII 码data ends stack segment p

15、ara stackstack 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 11 页 -dw 100h dup(0)stack ends code segment paracode assume cs:code,ds:data start:mov ax,data mov ds,ax;主程序main proc far display mess1 ;宏 display,显示提示1 mov bx,0 mov cx,0 call subr1 add summ,bx;求累加和;显示累加和display mess2 ;宏 display,显示提示2 lea bx,bin mov cl,1

16、mov ch,16 mov coup,0001h call subr2;显示二进制结果display mess3 ;宏 display,显示提示3 lea bx,hex mov cl,4 mov ch,4 mov coup,000fh call subr2;显示十六进制结果display mess4 ;宏 display,显示提示4 call subr3;显示十进制结果jmp main out1:retsys;宏 retsys,返回 DOS main endp subr2 proc near mov di,summ;存储单元summ 传参look1:rol di,cl;循环左移cl 位mov

17、si,di and si,coup;保留最低m 位mov dl,bxsi;查表显示高位、低位output dl;宏,显示dec ch jnz look1 ;显示 n 位ret 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 11 页 -subr2 endp;subr3,子程序 3:显示十进制结果subr3 proc near mov ax,summ ;存储单元summ 传参and ax,ax ;判断符号位jns let0;是正数转LET0 neg ax;负数求补mov si,ax output-;宏,显示负号mov ax,si let0:mov cx,0 mov bx,10;将

18、ax 变为十进制数let1:mov dx,0 inc cx;统计余数个数idiv bx;除以 10 push dx;压栈,保存余数cmp ax,0 jnz let1 let2:;显示结果,个数在cx 中pop ax;将余数弹入ax add ax,0030h;调整为 ascii 码output al;宏,显示loop let2 ret subr3 endp code ends end start;8-2b.asm public subr1 extrn sign:byte include 8-2.mac code segment paracode assume cs:code subr1 proc

19、 far mov sign,0 see0:input;宏,键盘输入十进制数cmp al,0dh;回车?jz exit 名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 11 页 -cmp al,-jnz see1 mov sign,-;保存负号jmp see2 see1:cmp al,0 ;其它字符?jl out1;转 out1 cmp al,9 jg out1 and ax,000fh;去掉 ascii 码xchg ax,bx;形成十进制数mov cx,10 mul cx;乘以 10 add bx,ax see2:jmp see0 exit:cmp cx,0;先键入了回车,退出j

20、z out1 cmp sign,-jnz see3 neg bx;是负数,求补,变为补码see3:;寄存器 BX 传参ret out1:retsys subr1 endp code ends end 8-2a.map Start Stop Length Name Class 00000H 0004EH 0004FH DA TA 00050H 0024FH 00200H STACK STACK 00250H 002F9H 000AAH CODE CODE Program entry point at 0025:0000 Unresolved externals:SUBR1 in file(s):

21、8-2A.OBJ(8-2a.asm)8-2b.map LINK:warning L4021:no stack segment Start Stop Length Name Class 00000H 00040H 00041H CODE CODE 名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 11 页 -Unresolved externals:SIGN in file(s):8-2B.OBJ(8-2b.asm)8-2ab.map Start Stop Length Name Class 00000H 0004EH 0004FH DA TA 00050H 0024FH 00200H STACK STACK 00250H 002F9H 000AAH CODE CODE 00300H 00340H 00041H CODE CODE Program entry point at 0025:0000 运行结果_五实验心得疑问建议通过本次实验,学习了宏的定义和调用,并且从LST 文件了解了宏的调用过程,另外了解了模块化程序设计,运用模块化设计,可以编写一些比较复杂的程序。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 11 页 -

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

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

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

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com