西安交通大学汇编语言实验报告

上传人:新** 文档编号:510931320 上传时间:2022-09-05 格式:DOCX 页数:16 大小:242.27KB
返回 下载 相关 举报
西安交通大学汇编语言实验报告_第1页
第1页 / 共16页
西安交通大学汇编语言实验报告_第2页
第2页 / 共16页
西安交通大学汇编语言实验报告_第3页
第3页 / 共16页
西安交通大学汇编语言实验报告_第4页
第4页 / 共16页
西安交通大学汇编语言实验报告_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《西安交通大学汇编语言实验报告》由会员分享,可在线阅读,更多相关《西安交通大学汇编语言实验报告(16页珍藏版)》请在金锄头文库上搜索。

1、精选优质文档-倾情为你奉上80X86汇编语言程序设计课内实验报告班级:电信硕41班姓名: 周翔宇 学号: 班级电信硕41实验时间 2016-4-1 206-4-23姓名周翔宇学号一、实验内容概述实验一 熟悉汇编语言实验环境(masm、link、debug/td)实验二 循环程序设计及分支程序设计实验三 子程序及 DOS/BIOS 调用程序设计实验四 高级汇编语言技术实验五 输入输出程序设计实验六 BIOS 和 DOS 中二、实验步骤实验一、masm, link, debug 的过程Debug调试命令:a, d, t, g, r, u, q等。 A (Assemble): 汇编语句 Aaddre

2、ss C (Compare): 比较内存 C range address D (Display): 显示内存 Daddress或 Drange E (Enter): 改变内存 E addresslist F (Fill): 填充内存 F range list G (Go): 执行程序 G=addressaddressaddress. H: 十六进制运算命令 Haddressdrive|sector|sector I (Input): 输入 I port address L (Load): 装入内存 Laddressdrive|sector|sector M (Move): 传送内存 M ran

3、ge address N (Name): 定义文件和参数 N d:pathfilename.ext O (Output): 输出字节 O port address byte P (Proceed): 在下条指令前停止 P =addressvalue Q (Quit): 结束 DEBUG程序 Q R (Register): 显示寄存器/标志位 R register name S (Search): 捡索字符 S range list T (Trace): 执行并显示(跟踪) T =addressvalue U (Unassemble): 反汇编指令 U address或 Urange W (Wr

4、ite): 把文件或数据写盘 W addressdrive|sector|sector STEP1首先进入cmd命令运行界面STEP2进入masm5文件夹 cd d:masm5 STEP3Masm 输入程序代码文件 xxx 然后回车STEP4Link 输入程序代码文件 xxx 然后回车STEP5Debug xxx.exe 进入了Debug界面实验二、循环程序设计及分支程序设计(1) 循环程序设计 数据段中已定义了一个有 n 个字数据的数组 M, 试编写一程序求出M 中绝对值最大的数,把它放在数据段的 M+2n 单元中,并将该数的偏移地址存放在M+2(n+1)单元中。程序思路:STEP1取第一个

5、数,记录此数;STEP2此数是正数吗?是转到STEP3,否转到STEP4;STEP3是正数,即为绝对值,转去判断下一个数;STEP4不是正数,变为其绝对值;STEP5判断绝对值大小;STEP6(AX)(BX),使(AX)中为绝对值最大的数;STEP7记下绝对值最大的数的地址,记下此数;STEP8数判断完了吗?是结束,否继续;STEP9转到STEP1;程序源代码:见附件1(2) 分支程序设计 设计一程序,接收从键盘输入的数字(15),并对每个数字的输入次数进行计数,计数结果存放在以 COUNT 为首地址的数组中。(最好能将计数结果打印出来)。程序思路:STEP 1 设置一个五路分支,输入数为X则

6、跳转到X步;STEP X COUNTX+1程序源代码:见附件2实验三、子程序及 DOS/BIOS 调用程序设计 设有 10 个学生的成绩分别是 76,69,84,90,73,88,99,63,100 和 80 分。 试编制一个子程序统计 6069 分,7079 分,8089 分,9099 分和 100 分的人数并分别存放到 S6, S7, S8, S9 和 S10 单元中。程序思路:将成绩除以10然后减6作为偏移地址,然后将此地址加1则表示人数加1程序代码:见附件3实验四、 高级汇编语言技术 试编写一段程序,完成以下功能:若给定名为 X 的字符串长度大于 5 时,下列指令将汇编 10 次。 A

7、DD AX, AX (要求:使用条件汇编,编译过程中生成 LST 文件,查看宏展开情况)程序思路:用($-X)代表字符串长度,然后使用条件汇编指令IF程序代码:见附件4实验五、输入输出程序设计 编写程序,使类型 1CH 的中断向量指向中断处理程序 COUNT,COUNT 统计 1CH 中断次数并存入单元 M 中。 程序思路:STEP1取中断类型号STEP2取中断向量STEP3偏移地址送IP,段地址送CS(上述步骤为保存原中断向量)STEP4设置新的中断向量STEP5转入中断处理程序,并且中断一次M累加1STEP6中断返回程序代码:见附件5实验六、.BIOS 和 DOS 中断 编写一个程序,接收

8、从键盘输入的 10 个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用 XLAT 指令变换)存入内存缓冲区 BUFFER。加密表为: 输入数字: 0,1,2,3,4,5,6,7,8,9 密码数字: 7,5,9,1,3,6,8,0,2,4程序思路:将密码存入数据段,利用XLAT指令,设置AL表示数字值,将对应表中数据送入程序代码:见附件六 三、实验中遇到的问题及其解决方法1、问题1问题描述:绝对值如何得到问题是在实验一中遇到,解决思路是:利用反码的思想解决问题的步骤是:是负数则对负数取反码2、问题2n问题描述:进入Debug界面后,更改输入,然后输入与要求不符n问题是在实验X中遇到,解

9、决的思路是:理清调试步骤n解决问题的步骤是:Debug界面进入后修改了输入然后必须退出Debug界面然后修改后再次重新进入Debug界面3、问题3问题描述:如何调用中断,键盘输入,并且屏幕显示问题是在实验二遇到的,解决的思路是:调用DOS功能解决问题的步骤骤是:调用DOS功能(INT 21H)并选取AL=2从键盘输入;选取AL=30在屏幕上显示,然后选取AL=4CH返回4、问题4问题描述:如何设置中断向量问题是在实验五遇到的,解决思路是,保存原有中断向量,设置新的中断向量,恢复原有的中断向量解决问题的步骤是:首先保存原有的中断向量,然后设置新的中断向量,进入中断程序,最后恢复原有中断向量四、实

10、验结果实验二(1)输出结果:实验二(2)输入:输出实验三、输出结果:数据段:实验四、反汇编:显示内存:查看LST文件:文件内容截图:实验五、内存结果:实验六、输入:输出: 五、附件 附件1:data segment M dw 1,4,3,2,-1,-5,-8,-9,$m1 dw 10 dup(?)disa db the location of M+2n is : $disb db the location of M+2(n+1)is : $disc db 0dh,0ah,24hdata endsstack segment stackdw 100 dup(?)top label wordstac

11、k endscode segmentmain proc farassume ss:stack,cs:code,ds:datastart:mov ax,stackmov ss,axlea sp,topmov ax,datamov ds,axxor si,si;用来放绝对值最大数的输出lea bx,Mmov si,bx;记录第一个数的地址mov cx,0;记录第一个数值假设是0L1:mov ax,bxcmp ax,24hje L4rol ax,1and ax,1hcmp ax,1;是负数的话就求原码je L2mov ax,bx;正数的话就直接比较mov di,0cmp cx,axjbe L3add

12、 bx,2jmp L1L2:mov di,1mov ax,bx;对负数进行求原码运算sub ax,1not axcmp cx,axjbe L3;记录绝对值比较大的数还有符号add bx,2jmp L1L3:mov cx,ax;改变cx的值mov si,bx;改变si的地址值mov dx,diadd bx,2jmp L1L4:lea bx,m1mov bx-2,cx;M+2n存放绝对值最大的数mov bx,si;M+2(n+1)存放他的地址mov bx+2,dx;存放他的符号L5:lea dx,disc;输出换行mov ah,9int 21hlea dx,disa;输出提示语mov ah,9in

13、t 21hlea bx,m1mov dx,bx+2cmp dx,0je L51mov dl,-mov ah,2int 21hL51:xor si,silea bx,m1;把结果地址传给bxmov si,bx-2;把结果传给simov cx,4L6:push cxmov cl,4rol si,clmov dx,siand dl,0fhcmp dl,9jbe L7add dl,7hL7:add dl,30hmov ah,2hint 21hpop cxloop L6L8:lea dx,disc;输出换行mov ah,9int 21hlea dx,disb;输出提示语mov ah,9int 21hxor si,silea bx,m1mov si,bxmov cx,4L9:push cxmov cl,4rol si,clmov dx,siand dl,0fhc

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

当前位置:首页 > 办公文档 > 教学/培训

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号