版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、汇编语言程序设计实验报告学院:计算机科学与技术 专业:计算机科学与技术 班级:计科131姓名学号实验组实验时间指导教师肖敏成绩实验项目名称实验五:8086 汇编语言子程序程序设计实验目的熟悉子程序的设计方法实验原理对汇编源程序进行汇编、链接,在Debug环境下完成调试和运行。实验内容1、熟悉子程序的结构及注意事项2、掌握子程序的设计、调试方法实验环境1. 硬件:微型计算机1台2. 软件:MASM软件实验步骤实验一. 使用子程序设计编程实现求数组ARY 元素之和:编辑下面的源程序到文件lab5.asm 中:CODE SEGMENT ORG 100HASSUME CS:CODE,DS:CODE,S
2、S:CODEMAIN PROC FAR MOV AX,CODE MOV DS,AX MOV TABLE ,OFFSET ARY MOV TABLE+2,OFFSET COUNT MOV TABLE+4,OFFSET SUM MOV BX,OFFSET TABLE CALL PROADD MOV AX,4C00H INT 21HMAIN ENDPPROADD PROC NEAR PUSH AX PUSH CX PUSH SI PUSH DI MOV SI,BX MOV DI,BX+2 MOV CX,DI MOV DI,BX+4 XOR AX,AXNEXT:ADD AX,SI ADD SI,2 L
3、OOP NEXT MOV DI,AX POP DI POP SI POP CX POP AX RETPROADD ENDPARY DW 1,2,3,4,5,6,7,8,9,10COUNT DW 10SUM DW ?TABLE DW 3 DUP(?)CODE ENDS END MAIN使用相应的文本编辑器建立文件LAB5.asm,内容如上所示。二. 生成可执行文件:1.汇编:C:masm masm lab5;2.连接:C:masm link lab5;三. 请写出此程序中的变量ary,count,sum 的EA,并判断此程序的功能:四. 用debug 调试此程序时,第一条指令的段内EA 是多少?
4、此程序数据段内偏移地址为0 的字单元数据为多少?其对应的机器指令是什么?L ;加载程序文件lab5.exeR ;查看IP 与CS 寄存器的内容D DS:0 ;查看当前数据段内偏移地址为0 的字单元数据U ;查看机器指令实验二:编写一个子程序,实现在屏幕的指定位置,用指定颜色,显示一个用0 结尾的字符串源程序如下data segmentstr db display string,0data endscode segmentassume cs:code,ds:datastart:mov ax,datamov ds,axmov dh,8mov dl,21mov cl,3mov si,offset s
5、trcall show_strmov ax,4c00hint 21h;-show_str proc nearpush axpush cxpush dxpush espush sipush dimov ax,0b800hmov es,axdec dhmov al,160mul dhadd dl,dlmov dh,0 ;计算显示在屏幕位置add ax,dxmov di,axmov ah,clx:mov cl,ds:simov ch,0jcxz f mov al,clmov es:di,axinc siinc diinc dijmp xf:pop dipop sipop espop dxpop cx
6、pop axret show_str endp;-code endsend start实验三:编写一个子程序,实现将word 型数据以十进制形式显示出来源程序如下:assume cs:codedata segmentdb 10 dup(0)data endsstack segmentdb 16 dup(0)stack endscode segmentstart:mov ax, datamov ds, axmov ax, stackmov ss, axmov sp, 16mov dx, 0c1hmov ax, 76f3hmov si, 0call dwtocmov dh, 8mov dl, 3m
7、ov cl, 2call show_strmov ah, 01hint 21hmov ax, 4c00hint 21h; 子程序:dwtoc; 功能:将dword型数据转变成表示十进制的字符串,字符串以0结尾; 参数:(ax) = dword 型数据的低16位;(dx) = dword型数据的高16位;ds:si 指向字符串首地址; 返回:无dwtoc:mov cx, 0push cxs_dwtoc:mov cx, 10; 除数call divdw; 余数在cx中add cx, 30hpush cx; 保存余数的ASCII形式; 判断是否商为0,如果高低16位都为0,则返回mov cx, dx
8、jcxz ok_dxz; 高位不为0,则直接跳回,继续执行运算jmp short s_dwtoc; 商的高位为0ok_dxz:mov cx, axjcxz ok_axzjmp short s_dwtoc; 商的低位为0ok_axz:; 赋值到 ds:simov dx, si; 保存si,si为字符串的首地址loop_dtoc:pop cxmov ds:si, cljcxz end_dwtocinc sijmp short loop_dtocmov si, dxend_dwtoc:mov si, dxretdtoc:; 先把一个0放进堆栈,在后面s2从堆栈中取出的时候,可以根据cx为0跳转mov
9、 cx, 0push cxs1_dtoc:mov dx, 0mov cx, 10div cxmov cx, dx; dx余数add cx, 30hpush cx; 保存在堆栈mov cx, ax; ax为商,当商为0的时候,各位的值就已经得到了,就可以跳出循环jcxz ok1_dtocjmp short s1_dtocok1_dtoc:mov ch, 0s2_dtoc:; 从堆栈中取出pop cxjcxz ok2_dtocmov ds:si, clinc sijmp short s2_dtocok2_dtoc:retshow_str:push axpush bxpush cxpush dxpu
10、sh espush si; 计算好字串开始显示的地址Y = 160*(行数-1) + 列数*2-2, B800 : Y; 循环将参数里的字串写进显卡内存,并检测到0就返回; bx = 160*(行数-1)mov bh, dhsub bh, 1mov al, 160mul bhmov si, ax; si 为根据行数算出来的偏移值; ax = 列数*2-2mov bl, dlmov al, 2mul blsub ax, 2; 根据列数算出来的偏移值add si, ax; 行数和列数的和存在SI中了mov ax, 0b800hmov es, axmov bx, si; 将si 的值保存在bx中,b
11、x为显存显示偏移值mov si, 0; 题目要求。mov dl, cl; 保存字体颜色属性mov ch, 0s:mov cl, ds:simov es:bx, cljcxz okmov es:bx+1, dlinc siadd bx, 2jmp short sok:pop sipop espop dxpop cxpop bxpop axret; 子程序:divdw; 要求:进行不会除法溢出的除法运算,被除数为dword,除数为word,结果为dword; 参数:(ax) = 被除数dword型的低16位;(dx) = 被除数dword型的高16位;(cx) = 除数; 返回:(dx) = 结果
12、的高16位;(ax) = 结果的低16位;(cx) = 余数divdw:mov bx, ax; 缓存ax被除数的低16位mov ax, dx; ax = H, 被除数的高16位mov dx, 0div cx; ax 为商,dx为余数 = rem(H/N) * 65536push ax; 结果的商,也就是最后要放在dx中的mov ax, bx; dx为 rem(H/N) * 65536, 为高16位,ax为低16位,再进行一次除法运算div cx; ax 为商最后结果的低位,dx为余数为最后结果,应赋给cxmov cx, dxpop dxretcode endsend start实验结果实验一:变量ary,count,sum 的EA分别是00140,00154,00156此程序的功能是数列求和实验二:实验三:实验总结这次实验,感觉难度最大的就是做2个子程序的设计,在网上向好友请教了N回!还犯了一些低级的错误,如将16位的寄
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- GB/T 47137-2026优质服务应用数字化方法实现优质服务指南
- 陕西经济管理职业技术学院《中小学建筑设计》2024-2025学年第二学期期末试卷
- 2025年药剂学模拟试卷与答案
- 人工智能行业2026年投资策略分析报告:百舸争流自成畦径
- 塑料真空成型工岗前生产标准化考核试卷含答案
- 滤棒成型设备操作工安全风险模拟考核试卷含答案
- 肉制品加工工安全宣教测试考核试卷含答案
- 生化检验员岗前技能实操考核试卷含答案
- 建筑瓦工安全理论知识考核试卷含答案
- 保伞工岗前基础能力考核试卷含答案
- 2025-2026学年人教鄂教版(新教材)小学科学三年级下学期教学计划及进度表
- JJF 2378-2026数字计量体系框架及应用指南
- (2026年春新版)人教版八年级生物下册全册教案
- 职业健康法培训课件
- 2025-2026学年北京市西城区初二(上期)期末考试物理试卷(含答案)
- 企业管理 华为会议接待全流程手册SOP
- (2025年)(完整)《中华人民共和国妇女权益保障法》知识竞赛题库及答案
- 化工设备使用与维护
- 部编版小学语文四年级下册教案(表格式)
- GA/T 850-2021城市道路路内停车位设置规范
- 钩不了沉逻辑专项讲义
评论
0/150
提交评论