西安交通大学汇编语言实验报告(共16页).docx
《西安交通大学汇编语言实验报告(共16页).docx》由会员分享,可在线阅读,更多相关《西安交通大学汇编语言实验报告(共16页).docx(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
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 西安交通大学 汇编语言 实验 报告 16
限制150内