版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 调试此程序时,第一条指令的段
4、内EA 是多少?此程序数据段内偏移地址为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 c
5、l,3mov si,offset strcall 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 si
6、pop espop dxpop cxpop axret show_str endp;-code endsend start实验三:编写一个子程序,实现将word 型数据以十进制形式显示出来源程序如下:assume cs:codedata segment db 10 dup(0)data endsstack segment db 16 dup(0)stack endscode segmentstart: mov ax, data mov ds, axmov ax, stack mov ss, ax mov sp, 16 mov
7、 dx, 0c1h mov ax, 76f3h mov si, 0call dwtocmov dh, 8 mov dl, 3 mov cl, 2 call show_str mov ah, 01h int 21h mov ax, 4c00h int 21h; 子程序:dwtoc; 功能:将dword型数据转变成表示十进制的字符串,字符串以0结尾; 参数:(ax) = dword 型数据的低16位;(dx) = dword型数据的高16位;ds:si 指向字符串首地址; 返回:无dwtoc: mo
8、v cx, 0 push cxs_dwtoc: mov cx, 10 除数 call divdw 余数在cx中add cx, 30h push cx 保存余数的ASCII形式 判断是否商为0,如果高低16位都为0,则返回 mov cx, dx jcxz ok_dxz; 高位不为0,则直接跳回,继续执行运算 jmp short s_dwtoc; 商的高位为0 ok_dxz: mov cx, ax jcx
9、z ok_axz jmp short s_dwtoc 商的低位为0 ok_axz: 赋值到 ds:si mov dx, si 保存si,si为字符串的首地址 loop_dtoc: pop cx mov ds:si, cl jcxz end_dwtoc inc si jmp short loop_dtocm
10、ov si, dx end_dwtoc: mov si, dx retdtoc: 先把一个0放进堆栈,在后面s2从堆栈中取出的时候,可以根据cx为0跳转 mov cx, 0 push cx s1_dtoc: mov dx, 0 mov cx, 10 div cxmov cx, dx dx余数 add cx, 30h push cx 保存在堆栈&
11、#160;mov cx, ax ax为商,当商为0的时候,各位的值就已经得到了,就可以跳出循环 jcxz ok1_dtoc jmp short s1_dtoc ok1_dtoc: mov ch, 0 s2_dtoc: 从堆栈中取出 pop cx jcxz ok2_dtoc mov ds:si, cl in
12、c si jmp short s2_dtocok2_dtoc: ret show_str: push ax push bx push cx push dx push es push si 计算好字串开始显示的地址Y = 160*(行数-1) + 列数*2-2, B800 : Y 循环将参数里的字串写进显卡内存,并检测到0就返回 &
13、#160; bx = 160*(行数-1) mov bh, dh sub bh, 1 mov al, 160 mul bh mov si, ax si 为根据行数算出来的偏移值; ax = 列数*2-2 mov bl, dl mov al, 2 mul bl sub ax, 2 根据列数算出来的偏移值 add si, ax 行数和
14、列数的和存在SI中了mov ax, 0b800h mov es, ax mov bx, si 将si 的值保存在bx中,bx为显存显示偏移值 mov si, 0 题目要求。mov dl, cl 保存字体颜色属性 mov ch, 0 s: mov cl, ds:si mov es:bx, cl jcxz okmov es:bx+1, dlinc si a
15、dd bx, 2 jmp short s ok: pop si pop es pop dx pop cx pop bx pop axret; 子程序:divdw; 要求:进行不会除法溢出的除法运算,被除数为dword,除数为word,结果为dword; 参数:(ax) = 被除数dword型的低16位; (dx) = 被除数dword型的高16位; (cx) = 除数; 返回:
16、(dx) = 结果的高16位; (ax) = 结果的低16位; (cx) = 余数divdw: mov bx, ax 缓存ax被除数的低16位 mov ax, dx ax = H, 被除数的高16位 mov dx, 0 div cx ax 为商,dx为余数 = rem(H/N) * 65536 push ax 结果的商,也就是最后要放在dx中的mov ax, bx dx为 rem(H/N) * 65536, 为高16位,ax为低16位,再进行一次除法运算 div cx ax 为商最后结果的低位,dx为余数为最后结果,应赋给cxmov cx, dx pop dxretcode endsend start实验结果实验一:变量ary,count,sum 的EA分别是00140,00154,00156此程序的功能
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024-2025学年反射疗法师大赛理论考前冲刺测试卷附完整答案详解(必刷)
- 2025安徽芜湖高新控股集团有限公司及其子公司招聘拟聘用人员(二)笔试历年难易错考点试卷带答案解析
- 2026清华附中上地学校招聘笔试备考题库及答案解析
- 2025城发环保能源(濮阳)有限公司招聘1人(河南)笔试历年难易错考点试卷带答案解析
- 2026浙江事业单位统考衢州市招聘44人笔试备考题库及答案解析
- 2025四川长虹新网科技有限责任公司招聘结构设计师岗位测试笔试历年备考题库附带答案详解
- 2025四川绵阳科技城新区投资控股(集团)有限公司(含所属公司)人力资源需求外部招聘暨市场化选聘顺位背景调查2025年第三批次第一笔试历年常考点试题专练附带答案详解
- 2025四川波鸿实业有限公司招聘威斯卡特(绵阳)汽车零部件制造有限公司质量工程师岗位测试笔试历年难易错考点试卷带答案解析
- 2025四川广安安农发展集团有限公司第三批次招聘劳务派遣制工作人员笔试历年典型考点题库附带答案详解
- 2025四川九洲线缆有限责任公司招聘产品技术岗等岗位测试笔试历年典型考点题库附带答案详解
- 2026浙江温州市公安局招聘警务辅助人员42人笔试参考题库及答案解析
- 2026广东茂名市公安局招聘警务辅助人员67人考试参考题库及答案解析
- 2026年希望杯IHC全国赛二年级数学竞赛试卷(S卷)(含答案)
- 中国抗真菌药物临床应用指南(2025年版)
- 2025-2026 学年下学期八年级英语下册教学计划
- 幼儿园春季育儿知识分享:守护成长健康同行
- 2026年六安职业技术学院单招职业适应性考试题库附答案详解(预热题)
- 2025年安徽审计职业学院单招职业适应性测试试题及答案解析
- 2026年春节后复工复产“开工第一课”安全生产培训课件
- 2025年西南计算机有限责任公司招聘笔试真题
- 2026常德烟草机械有限责任公司招聘35人笔试参考题库及答案解析
评论
0/150
提交评论