中南大学 汇编语言实验报告.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《中南大学 汇编语言实验报告.pdf》由会员分享,可在线阅读,更多相关《中南大学 汇编语言实验报告.pdf(25页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!中南大学 汇编语言实验报告 计算机原理与汇编 实 验 报 告 学生姓名 学 号 专业班级 指导教师 贺建飚 学 院 信息科学与工程学院 完成时间 2019年 6 月 实验一 二进制转十六进制 一、实验目的 (1)掌握循环程序的设计方法。(2)掌握汇编语言源程序的编辑、汇编、连接及调试过程。(3)进一步熟悉利用 DEBUG程序修改参数的方法,并检查和验证结果的正确性。(4)学会针对不同的问题,选用不同的组织循环的方法。二、实验要求 掌握循环程序的过程和汇编实现原理,进一步熟练掌握 DEBUG操作指令以及
2、汇编语言源程序的编辑、汇编、连接及调试过程。三、实验内容 掌握循环排序算法的思想:二进制到十六进制转换程序 实验代码如下:assume cs:code code segment main proc far start:mov bx,*0b;待转换成十六进制的二进制数 mov ch,4;设置循环次数 rotate:mov cl,4;设置循环左移的位数 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!rol bx,cl;将 bx 中的每位依次循环左移 4 位,;每左移一次,把最高位同时移入 CF 和操作数最低位 mov al,bl and al,0fh
3、;将 al 高 4 位清 0,保留从 rol循环移位到 al 低四位的值 add al,30h;将 4 位二进制数转换成对应的 ASCII码 cmp al,3ah;判定 4 位二进制数是否大于 9 jl print add al,7h print:mov dl,al;调用中断程序输出单个字符 mov ah,2 int 21h dec ch;继续循环,直到循环 4 次为止 jnz rotate main endp mov ax,4c00h int 21h code ends end 四、实验结果 DEBUG调试如下:五、实验心得 编了这个程序之后发现,想要真正理解一个程序都是需要掌握众多助记符的
4、用法以及它的意思,只有了解并明白了这些之后才可以分析程序或者是编写简单的小程序。实验二 起泡排序算法的程序实现 一、实验目的 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!(1)掌握循环程序的设计方法。(2)掌握汇编语言源程序的编辑、汇编、连接及调试过程。(3)进一步熟悉利用 DEBUG程序修改参数的方法,并检查和验证结果的正确性。(4)学会针对不同的问题,选用不同的组织循环的方法。二、实验原理 循环结构分 DO_WHILE和 DO_UNTIL两种,无论使用哪种循环结构,循环程序一般应包括以下几部分:循环初始化。它包括设置循环次数的初始值、地址指
5、针的初始设置等。循环体。这是循环工作的主体,包括要重复执行的操作,以及循环的修改部分。修改部分包括地址指针的修改、循环控制条件的修改等。循环控制部分。它是控制循环的关键,判断循环条件满足与否。特别要注意循环入口和循环次数的正确设置、地址指针及循环控制条件的修改等。否则会得不到期望的结果。三、实验内容 掌握循环排序算法的思想:起泡排序算法的程序实现 实验代码如下:DATAS SEGMENT BUFFER DB 100 DUP(?)X DB 5 DUP(?)STRING1 DB PLEASE INPUT DATAS:,$STRING2 DB AFTER SORT IS:,$SHIFT DB 13,
6、10,$SPACE DB 20H,$DATAS ENDS STACKS SEGMENT 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!DB 256 DUP(?)STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS,ES:DATAS START:MOV AX,DATAS MOV DS,AX MOV ES,AX MOV AX,STACKS LEA SI,BUFFER MOV CX,0 LEA DX,STRING1 MOV AH,09H INT 21H L1:MOV AH,01H;/键
7、盘输入转成数 INT 21H CMP AL,0DH JE L2 CMP AL,20H JE L3 XOR AH,AH SUB AX,30H XCHG AX,BX MOV DX,10 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MUL DX ADD BX,AX JMP L1 L3:INC CX MOV SI,BL ADD SI,1 XOR BX,BX JMP L1 L2:LEA DX,SHIFT MOV AH,09H INT 21H MOV SI,BL LEA DI,X MOV DI,CL LABLE2:LEA SI,BUFFER PUSH CX
8、 LABLE:MOV AL,SI CMP AL,SI+1 JBE L4 XCHG AL,SI+1 MOV SI,AL 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!L4:ADD SI,1;跳到回车处理;空格处理;/存储到 buffer中;/排序算法 POP CX LOOP LABLE2 LEA DX,STRING2 MOV AH,09H INT 21H LEA DI,BUFFER L7:MOV CX,2 MOV BH,DI L6:PUSH CX MOV CL,4 ROL BX,CL MOV DL,BL AND DL,0FH CMP DL,9 JB
9、E L5 ADD DL,7 L5:ADD DL,30H MOV AH,02H INT 21H 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!POP CX LOOP L6 INC DI LEA DX,SPACE MOV AH,09H INT 21H LEA SI,X MOV BL,SI CMP BL,0 DEC BL LEA SI,X MOV SI,BL JGE L7 MOV AH,4CH INT 21H CODES ENDS END START 四、实验结果;/显示字符 DEBUG调试如下:五、实验心得 1.在进行循环程序设计时,要注意循环初始化
10、、内外层循环的控制、循环结束条件等的设置,对整个程序的执行逻辑要非常清楚,这样可以避免死循环等意外情况的出现。2.多层循环的控制更为复杂,编写代码时,要注意注释重要的循环控制部分,这样思路才不会乱。同时要对照流程图,随时观察代码的逻辑思路是否正确。3.当要观察排序结果时,可利用 D 命令,显示数据段的内容,检查程序是否正常运行。欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!实验三 查找匹配字符串 一、实验目的 (1)掌握循环程序的设计方法。(2)掌握汇编语言源程序的编辑、汇编、连接及调试过程。(3)进一步熟悉利用 DEBUG程序修改参数的方法,并
11、检查和验证结果的正确性。(4)学会针对不同的问题,选用不同的组织循环的方法。二、实验要求 掌握循环程序的过程和汇编实现原理,进一步熟练掌握 DEBUG操作指令以及汇编语言源程序的编辑、汇编、连接及调试过程。三、实验内容 掌握循环排序算法的思想:查找匹配字符串:程序接收用户键入的一个关键字以及一个句子。如果句子中不包含关键字则显示NO match!;如果句子中包含关键字则显示MATCH,且把该字在句子中的位置用十六进制数显示出来。实验代码如下:DATA SEGMENT mess1 DB Enter keyword:,$mess2 DB Enter Sentence:,$mess3 DB Matc
12、h at location:,$mess4 DB NOT MATCH.,13,10,$mess5 DB H of the sentence,13,10,$change DB 13,10,$stoknin1 label byte max1 db 10 act1 db?stokn1 db 10 dup(?)欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!stoknin2 label byte max2 db 50 act2 db?stokn2 db 50 dup(?)DATA ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS
13、ENDS CODE SEGMENT ;*代码段 main proc far assume cs:code,ds:data,es:data START:push ds sub AX,AX sub BX,BX sub DI,DI sub SI,SI push AX;为返回 dos并清空后面要用到的寄存器 MOV AX,DATA MOV DS,AX LEA DX,mess1 MOV ah,09 INT 21h;输出 Enter keyword LEA DX,stoknin1 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV ah,0ah;用 21
14、号中段的 0ah号功能获取关键字 INT 21h cmp act1,0 je exit;如果为空直接退出程序 a10:;*输入 Sentence并判断 LEA DX,change MOV ah,09 INT 21h;输出回程,换行 LEA DX,mess2 MOV ah,09 INT 21h;输出 Enter Sentence:LEA DX,stoknin2 MOV ah,0ah INT 21h;用 21 号中段的 0ah号功能获取句子 MOV AL,act1 CBW MOV CX,AX;保存关键字长度到 cx PUSH CX;cx入栈 MOV AL,act2 cmp AL,0 je a50;
15、保存句子长度到 al,若句子为空则跳转显示 not match SUB AL,act1 js a50;若句子长度小于关键字长度,则跳转显示 not match INC AL CBW LEA BX,stokn2;将句子的首地址放进 BX 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!MOV DI,0 MOV SI,0 a20:;*比较,内循环 MOV AH,BX+DI CMP AH,stokn1SI;遇见字符不相等就跳转到 a30 jne a30 INC DI INC SI DEC CX;没遇到一个相等的字符,cx-1,cx不为 0 则比较下一个字
16、符,当 cx 为 0 是说明关键字比较完 CMP CX,0 je a40 jmp a20 a30:;*外循环,BX+1,清空 si,di 继续内循环比较 INC BX DEC AL cmp AL,0 je a50 MOV DI,0 MOV SI,0 POP CX push CX jmp a20 欢迎您阅读并下载本文档,本文档来源于互联网,如有侵权请联系删除!我们将竭诚为您提供优质的文档!a40:;*match,将 bx 减去句子的首地址加一得到关键字所在位置,调用二进制转十六进制子函数将位置输出 SUB BX,offset stokn2 INC BX LEA DX,change MOV ah,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 中南大学 汇编语言实验报告 中南 大学 汇编语言 实验 报告
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内