汇编.docx
- 文档编号:8946112
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:52
- 大小:436.38KB
汇编.docx
《汇编.docx》由会员分享,可在线阅读,更多相关《汇编.docx(52页珍藏版)》请在冰豆网上搜索。
汇编
实验报告
实验课程:
操作系统
学生姓名:
朱金山
学号:
6100411169
专业班级:
电III114班
2012年12月17日
目录
实验1利用DEBUG调试汇编语言程序段1
实验2汇编语言程序上机过程8
实验3分支程序实验11
实验4循环程序实验16
实验5子程序实验21
实验6 字符处理程序实验29
实验7排序程序设计34
实验8计算机钢琴程序39
南昌大学实验报告
---利用DEBUG调试汇编语言程序段
学生姓名:
朱金山学号:
6100411169专业班级:
电III114班
实验类型:
■验证□综合□设计□创新实验日期:
实验成绩:
1、实验目的
1.熟悉DEBUG有关命令的使用方法;
2.利用DEBUG掌握有关指令的功能;
3.利用DEBUG运行简单的程序段。
二、实验内容
1.进入和退出DEBUG程序;
2.学会DEBUG中的
1)E命令(修改指定内存)
2)R命令(显示当前寄存器的内容)
3)T命令(设置陷井,单步执行)
4)A命令(将指令直接汇编成机器码输入到内存中。
)
5)G命令等的使用(执行A命中输入的汇编指令)
3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
三.实验要求
仔细阅读有关DEBUG命令的内容,对有关命令,要求事先准备好使用的例子
四、主要实验步骤
1.在DOS提示符下,进入DEBUG程序;
2.在DOS目录下启动DEBUG;
3.详细记录每一步所用的命令,以及查看结果的方法和具体结果。
五、实验数据及处理结果
1.进入和退出DEBUG程序;
1)开始—运行,输入cmd,点确定进入命令窗口
2)在命令窗口中输入dubug进入debug程序
3)进入debug窗口后,输入q命令退出debug
2.学会DEBUG中的
1)D命令(显示内存数据D段地址:
偏移地址)
例1:
-D100;显示DS段,0100开始的128个字节内容
说明:
指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。
1DSEGREG[起始地址][L长度]
;显示SEGREG段中(缺省内默认为DS),以[起始地址](缺省内为当前的偏移地址),开始的[L长度](缺省内默认为128)个字节的内容.
2DSEGREG[段地址:
偏移地址]
;显示SEGREG段中(缺省内默认为DS),[段地址:
偏移地址]开始的[L长度](缺省内默认为128)个字节内容
-D ;默认段寄存器为DS,当前偏移地址(刚进入debug程序偏移地址为0100H)
-DDS:
100;显示DS段,0100H开始的128个字节内容
-DCS:
200;显示CS段,0200H开始的128个字节内容
-D200:
100;显示DS段,0200:
0100H开始的128个字节内容
-D200;显示DS段,0200H开始的128个字节内容
-D100L10;显示DS段,100H开始的100H个字节内容
2)E命令(修改指定内存)
例1:
-E1004142434448474645
-D100,L08
结果:
08F1:
01004142434448474645
例2:
-E100:
08F1:
01007642:
42是操作员键入
此命令是将原100号内存内容76修改为42,用D命令可察看。
①E地址 ;从指定地址开始,修改(或连续修改)存储单元内容。
DEBUG首先显示指定单元内容,如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接按空格键或减号键;回车键结束命令。
②E地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。
-EDS:
100F3‘AB’8D;把DS段中0100H开始的四个字节修改为F3‘AB’(A和B的ASCII码)8D
也可以按下面的方式实现
3)R命令(显示当前寄存器的内容)
显示修改寄存器命令R
R;★显示所有寄存器和标志位状态;
★显示当前CS:
IP指向的指令。
显示标志时使用的符号:
标志 标志=1 标志=0
OF OV NV
DF DN UP
IF EI DI
SF NG PL
ZF ZR NZ
AF AC NA
PF PE PO
CF CY NC
4)T命令(设置陷井,单步执行)
①T;从当前IP开始执行一条指令。
②T数值;从当前IP开始执行多条指令,数值:
执行的指令条数。
②T=地址;从给定的地址执行一条指令
③T=地址 数值;从给定的地址执行多条指令,数值:
执行的指令条数.
-T;从当前IP开始执行一条指令
-T5;从当前IP开始执行5条指令
-T=100 5;从当前0100H开始执行5条指令
5)A命令(将指令直接汇编成机器码输入到内存中。
)
汇编命令A
A[地址];从指定的地址开始输入符号指令;如省略地址,则接着上一个A命令的最后一个单元开始;若第一次使用A命令省略地址,则从当前CS:
IP开始(通常是CS:
100)。
注释:
①在DEBUG下编写简单程序即使用A命令。
②每条指令后要按回车。
③不输入指令按回车,或按Ctrl+C结束汇编。
④支持所有8086符号硬指令,伪指令只支持DB、DW,不支持各类符号名。
使用A命令在0100H开始输入指令movax,10inccxmovbl,al
单步执行上述指令
6)G命令等的使用(执行A命中输入的汇编指令)
运行程序命令G
①G;从CS:
IP指向的指令开始执行程序,直到程序结束或遇到INT3。
②G=地址;从指定地址开始执行程序,直到程序结束或遇到INT3。
③G断点1[,断点2,…断点10];从CS:
IP指向的指令开始执行程序,直到遇到断点。
④G=地址 断点1[,断点2,…断点10]
-G;从CS:
IP指向的指令开始执行程序。
-G=100;从指定地址开始执行程序。
-G=100105110120
使用A命令在0100H开始输入指令movax,10inccxmovbl,alint3
然后使用g命令执行
上面的例子设断点在100H处然后用T命令单步执行
3.用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。
六、实验体会或对改进实验的建议
本实验讲诉了汇编语言调试的基础,但不得说,相比于C语音,汇编真心不好调试
七、参考资料
《IBM-PC汇编语言程序设计》(第二版)沈美明温东婵著清华大学出版社2001年
南昌大学实验报告
---汇编语言程序上机过程
学生姓名:
朱金山学号:
6100411169专业班级:
电III114班
实验类型:
□验证□综合■设计□创新实验日期:
实验成绩:
一.实验目的
熟练掌握汇编语言程序的编辑、调试和运行的过程和方法。
了解汇编语言程序的汇编、运行环境。
2、实验内容
1.掌握常用的编辑工具软件(如WORD、EDIT)、MASM和LINK的使用;
2.伪指令:
SEGMENT,ENDS,ASSUME,END,OFFSET,DUP;
3.利用的INT21H的1号功能实现键盘输入的方法;
三、实验要求
1.仔细阅读有关伪指令SEGMENT,ENDS,ASSUME,END,OFFSET,DUP的内容;
2.了解利用的INT21H的1号功能实现键盘输入的方法,了解.EXE文件和.COM文件的区别及用INT21H4C号功能返回系统的方法;
3.阅读下面程序段
四、主要实验步骤
程序:
datasegment
messagedb'Thisisasampleprogramofkeyboardanddisply'
db0dh,0ah,'Pleasestrikethekey!
',0dh,0ah,'$'
dataends
stacksegmentparastack'stack'
db50dup(?
)
stackends
codesegment
assumecs:
code,ds:
data,ss:
stack
start:
movax,data
movds,ax
movdx,offsetmessage
movah,9
int21h;显示'Thisisasampleprogramofkeyboardanddisply'
again:
movah,1
int21h;等待键盘输入,保存至AL
cmpal,1bh;1bh字符ESC的ASCII
jeexit
cmpal,61h;61h字符a的ASCII
jc(jb)nd;小于(CF=1有借位)转向ND原样显示
cmpal,7ah;
jand;大于转向ND原样显示
andal,11011111b;转化为大写字母subal,20h
nd:
movdl,al
movah,2
int21h
jmpagain
exit:
movah,4ch
int21h
codeends
endstart
实验步骤:
1.用用文字编辑工具(记事本或EDIT)将源程序输入,其扩展名为.ASM。
2.用MASM对源文件进行汇编,产生.OBJ文件和.LST文件。
若汇编时提示有错,用文字编辑工具修改源程序后重新汇编,直至通过。
3.用TYPE命令显示1产生的.LST文件。
4.用LINK将.OBJ文件连接成可执行的.EXE文件。
5.在DOS状态下运行LINK产生的.EXE文件。
即在屏幕上显示标题并提示你按键。
每按一键在屏幕上显示二个相同的字符,但小写字母被改成大写。
按ESC键可返回DOS。
若未出现预期结果,用DEBUG检查程序。
五、实验数据及处理结果
六、实验体会或对改进实验的建议
作为面向机器的低级语言,汇编语言上机过程完整的显示了一个程序从设计到打包运行的过程,由于习惯了VC这样视窗环境,对dos环境有点古老的感觉
七、参考资料
《IBM-PC汇编语言程序设计》(第二版)沈美明温东婵著清华大学出版社2001年
南昌大学实验报告
---分支程序实验
学生姓名:
朱金山学号:
6100411169专业班级:
电III114班
实验类型:
□验证□综合■设计□创新实验日期:
实验成绩:
1、实验目的
1.掌握分支程序的设计方法;
2.掌握利用DEBUG修改参数、检查结果的方法;
3..熟悉汇编语言源程序的编辑、汇编、连接及调试过程。
二、实验内容
1.编写一个程序,显示AL寄存器中的两位十六进制数
2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
三、实验要求
1.编写实验内容要求的两个程序;
2.写出调试以上程序,即修改程序参数,检查结果的操作方法;
3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。
四、主要实验步骤
1.用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。
2.对其进行汇编及连接,产生.EXE文件。
3.对.EXE文件进行调试运行。
(1)用DEBUG调试运行,学会修改AL内容的方法;
(2)对DSPKEY.EXE键入不同的字符,分别进行调试;
(3)在MS-DOS下运行这两个.EXE文件。
五、实验数据及处理结果
1.源代码
(1) 显示AL中两位十六进制数程序:
;DISPHEX.ASM
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAL,3EH
MOVBL,AL
MOVDL,AL
MOVCL,4
SHRDL,CL
CMPDL,9
JBENEXT1
ADDDL,7
NEXT1:
ADDDL,30H
MOVAH,2
INT21H;显示高位ASCII码
MOVDL,BL
ANDDL,0FH
CMPDL,9
JBENEXT2
ADDDL,7
NEXT2:
ADDDL,30H
MOVAH,2
INT21H;显示低位ASCII码
MOVAH,4CH
INT21H
CODEENDS;返回DOS
ENDSTART
(2)显示键入字符程序
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
CMPAL,0DH
JZDONE
CMPAL,'0'
JBNEXT
CMPAL,'9'
JACHARUP
MOVDL,'0'
MOVAH,2
INT21H
JMPSTART
CHARUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHRDN
DISPC:
MOVDL,'C'
MOVAH,2
INT21H
NEXT:
JMPSTART
CHRDN:
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
MOVDL,'c'
MOVAH,2
INT21H
JMPNEXT
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
6、实验体会或对改进实验的建议
编写显示AX中四位十六进制数程序,画出程序的流程图。
代码如下:
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAX,3524H
MOVCH,4
LOP:
MOVCL,4
ROLAX,CL
MOVDL,AL
PUSHAX
ANDDL,0FH
ADDDL,30H
CMPDL,3AH
JBPRINT
ADDDL,7H
PRINT:
MOVAH,2
INT21H
POPAX
DECCH
JNZLOP
MOVAH,4CH
INT21H
CODEENDS
ENDSTAR
七、参考资料
《IBM-PC汇编语言程序设计》(第二版)沈美明温东婵著清华大学出版社2001年
南昌大学实验报告
---循环程序实验
学生姓名:
朱金山学号:
6100411169专业班级:
电III114班
实验类型:
□验证□综合■设计□创新实验日期:
实验成绩:
1、实验目的
1.掌握循环程序的设计方法;
2.学会针对不同的问题,选用不同的组织循环的方法;
3.进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。
二、实验内容
1.编写一个程序,显示BX寄存器中的两位十六进制数;
2.编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符
三、实验要求
1.编写实验内容要求的两个程序;
2.写出调试以上程序,即修改程序参数,检查结果的操作方法;
3.熟悉源程序汇编、连接命令的使用方法即要回答的内容。
四、主要实验步骤
1.用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM;
2.对其进行汇编及连接,产生.EXE文件;
3.对.EXE文件进行调试运行。
(1)用DEBUG调试运行,学会修改AL内容的方法;
(2)对DSPKEY.EXE键入不同的字符,分别进行调试;
(3)在MS-DOS下运行这两个.EXE文件。
五、实验数据及处理结果
1.DATASEGMENT
STRDB'H',0AH,0DH,'$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVBX,1111110111100001B
MOVCH,4;循环四次
LOP:
MOVCL,4
ROLBX,CL;每次循环环左移四位
MOVDX,BX
ANDDL,0FH;每次取低四位,来表示一个十六进数
ADDDL,30H;转化成为ASSIC码
CMPDL,3AH;判断DL是否大于10的ASSIC码(A+30H)
JBNEXT
ADDDL,7;大于10再加上7
NEXT:
MOVAH,2
INT21H
DECCH
JNZLOP
MOVDX,OFFSETSTR
MOVAH,9
INT21H
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果:
2.显示键入字符程序
CODESEGMENT
ASSUMECS:
CODE
START:
MOVAH,1
INT21H
CMPAL,0DH
JZDONE
CMPAL,'0'
JBNEXT
CMPAL,'9'
JACHARUP
MOVDL,'0'
MOVAH,2
INT21H
JMPSTART
CHARUP:
CMPAL,41H
JBNEXT
CMPAL,5AH
JACHRDN
DISPC:
MOVDL,'C'
MOVAH,2
INT21H
NEXT:
JMPSTART
CHRDN:
CMPAL,61H
JBNEXT
CMPAL,7AH
JANEXT
MOVDL,'c'
MOVAH,2
INT21H
JMPNEXT
DONE:
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
运行结果
六、实验体会或对改进实验的建议
编写一循环程序,测量一字符串长度,并用16进制数显示之。
以下程序测量字符串“THISISANEXAMPLE”的长度:
DATASEGMENT
STRINGDB'THISISANEXAMPLE$'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
LEABX,STRING
MOVCL,0
MOVAX,24H
J1:
CMPAX,[BX]
JEJ2
INCBX
INCCL
JMPJ1
J2:
MOVAX,CX
MOVCH,4
LOP:
MOVCL,4
ROLAX,CL
MOVDL,AL
PUSHAX
ANDDL,0FH
ADDDL,30H
CMPDL,3AH
JBPRINT
ADDDL,7H
PRINT:
MOVAH,2
INT21H
POPAX
DECCH
JNZLOP
MOVAH,4CH
INT21H
CODEENDS
ENDSTART
七、参考资料
《IBM-PC汇编语言程序设计》(第二版)沈美明温东婵著清华大学出版社2001年
南昌大学实验报告
---子程序实验
学生姓名:
朱金山学号:
6100411169专业班级:
电III114班
实验类型:
□验证□综合■设计□创新实验日期:
实验成绩:
1、实验目的
1.掌握主程序与子程序之间的调用关系及调用方法;
2.掌握子程序调用过程中近程调用与远程调用的区别;
3.掌握通过堆栈转送参数的方法
二、实验内容
1.将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。
要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。
2.编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。
三、实验要求
1.第一个实验程序用子程序的近程调用实现。
由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。
实验过程中可以从堆栈的内容看到两个子程序的返回地址值。
由于是近调用,地址值只包括返回地址的段内偏移量。
在每个子程序的执行中,检查CS值是不变的。
2.第二个程序是利用远调用的方法调用子程序的。
在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。
子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。
3.第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。
一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。
有关该方法的原理此处不再介绍。
4.预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编
![提示](https://static.bdocx.com/images/bang_tan.gif)