南昌大学汇编语言实验报告.pdf
《南昌大学汇编语言实验报告.pdf》由会员分享,可在线阅读,更多相关《南昌大学汇编语言实验报告.pdf(43页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.实 验 报 告 实验课程:IBM-PC 汇编语言程序设计 学生姓名:刘昌盛 学 号:7101310013 专业班级:电气信息类 III 101 班 2011 年 12 月 15 日.汇编语言实验指导 前 言 汇编语言是计算机专业的一门重要的专业基础课,主要介绍汇编语言程序设计的基本原理和方法。汇编语言是一门理论性和实践性较强的课程,辅助课堂教学的实验有助于帮助学生理解汇编语言的基本原理,锻炼学生的动手能力,提高学生的综合应用知识的能力。本实验指导按照汇编语言程序设计的教学大纲要求编写。依据循序渐进、由浅入深的规律,通过实例复习巩固所学知识,借助实例开展汇编语言程序设计。通过这种既具有构造性又
2、具有创造性的学习活动,更便于初学者的理解和掌握,通过上机实验,并在实验后完成实验报告,又能进一步加深和拓宽所学知识。为了帮助老师和学生开展实验,我们特编了这本实验指导,希望能对我校的汇编语言教学工作有所帮助。本实验指导所有实例均在 PC 机上调试通过。.目录 (1)利用 DEBUG 调试汇编语言程序段(2)初级程序的编写与调试实验(一)(3)初级程序的编写与调试实验(二)(4)汇编语言程序上机过程(5)分支程序实验(6)循环程序实验(7)子程序实验 .实验 1 利用 DEBUG 调试汇编语言程序段 一实验目的 1熟悉 DEBUG 有关命令的使用方法;2利用 DEBUG 掌握有关指令的功能;3利
3、用 DEBUG 运行简单的程序段。二实验内容 1进入和退出 DEBUG 程序;1)开始运行,输入 cmd,点确定进入命令窗口 2)在命令窗口中输入 dubug 进入 debug 程序 .3)进入 debug 窗口后,输入 q 命令退出 debug 2学会 DEBUG 中的 1)D 命令(显示内存数据 D 段地址:偏移地址)例 1:-D100 ;显示 DS 段,0100 开始的 128 个字节内容 说明:指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。D SEGREG起始地址 L 长度 ;显示SEGREG段中(缺省内默认为DS),以起始地址(缺省内为当前的偏移地址),开始的L 长度
4、(缺省内默认为 128)个字节的内容.D SEGREG段地址:偏移地址 ;显示SEGREG段中(缺省内默认为DS),段地址:偏移地址 开始的L 长度(缺省内默认为128)个字节内容 D ;默认段寄存器为 DS,当前偏移地址(刚进入 debug 程序偏移地址为 0100H).D DS:100 ;显示 DS 段,0100H 开始的 128 个字节内容 D CS:200;显示 CS 段,0200H 开始的 128 个字节内容 D 200:100;显示 DS 段,0200:0100H 开始的 128 个字节内容 D 200;显示 DS 段,0200H 开始的 128 个字节内容 D 100 L 10;
5、显示 DS 段,100H 开始的 100H 个字节内容 2)E 命令(修改指定内存)例 1:-E100 41 42 43 44 48 47 46 45 -D 100,L08 结果:08F1:0100 41 42 43 44 48 47 46 45 例 2:-E 100:08F1:0100 76 42:42 是操作员键入 此命令是将原 100 号内存内容 76 修改为 42,用 D 命令可察看。E 地址 ;从指定地址开始,修改(或连续修改)存储单元内容。DEBUG 首先显示指定单元内容,.如要修改,可输入新数据;空格键显示下一个单元内容并可修改,减号键显示上一个单元内容并可修改;如不修改,可直接
6、按空格键或减号键;回车键结束命令。E 地址 数据表;从指定的地址开始用数据表给定的数据修改存储单元。E DS:100 F3 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 命令(设置陷井
7、,单步执行)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)。注释:
8、在 DEBUG 下编写简单程序即使用 A 命令。每条指令后要按回车。不输入指令按回车,或按 Ctrl+C 结束汇编。支持所有 8086 符号硬指令,伪指令只支持 DB、DW,不支持各类符号名。使用 A 命令在 0100H 开始输入指令 mov ax,10 inc cx mov bl,al 单步执行上述指令 6)G 命令等的使用(执行 A 命中输入的汇编指令)运行程序命令 G G;从 CS:IP 指向的指令开始执行程序,直到程序结束或遇到 INT 3。G=地址;从指定地址开始执行程序,直到程序结束或遇到 INT 3。G 断点 1,断点 2,断点 10;从 CS:IP 指向的指令开始执行程序,直到
9、遇到断点。G=地址 断点 1,断点 2,断点 10 G;从 CS:IP 指向的指令开始执行程序。G=100;从指定地址开始执行程序。G=100 105 110 120 使用 A 命令在 0100H 开始输入指令 mov ax,10 inc cx mov bl,al int 3 然后使用 g 命令执行.上面的例子设断点在 100H 处然后用 T 命令单步执行 3.用 DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。三实验要求 仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;四实验环境 PC 微机 DOS 操作系统或 Wind
10、ows 操作系统 MASM.EXE,LINK.EXE,DEBUG.COM 或宏汇编集成环境 五实验步骤 用 DEBUG 验证乘法、除法、加法、减法带进位加、带借位减、堆栈操作指令、串操作指令的功能:1.验证加法和带进位加,使用 A 命令,在 DEBUG 中键入以下代码:mov ax,f111 mov bx,f222 mov cx,2 mov dx,3 add ax,bx adc cx,dx 使用 G 命令查看结果.2.验证减法和带借位减法,使用 A 命令,在 DEBUG 中键入以下代码:mov ax,2 mov bx,3 mov cx,5 mov dx,2 sub ax,bx sbb cx,d
11、x 使用 G 命令查看结果 3.验证乘法和除法,使用 A 命令,在 DEBUG 中键入以下代码:乘法:mov al,b4 mov bl,11 mul bl 使用 G 命令查看结果 除法:mov ax,400 mov bl,b4 div bl 使用 G 命令查看结果 4.验证堆栈操作指令,使用 A 命令,在 DEBUG 中键入以下代码:mov ax,1111.push ax mov ax,2222 使用 G 命令查看结果后在使用 A 命令,在 DEBUG 中键入以下代码:pop ax 使用 G 命令查看结果 5.验证串操作指令,使用 A 命令,在 DEBUG 中键入以下代码:org 1000 d
12、b hello mov si,1000 mov di,1500 mov cx,5 cld rep movsb 使用 G 命令查看结果 六实验报告要求 1如何启动和退出 DEBUG 程序;2整理每个 DEBUG 命令使用的方法,实际示例及执行结果。七思考题 启动 DEBUG 后,要装入某一个.EXE 文件,应通过什么方法实现?答:进入 DOS,输入 DEBUG xxx.exe,其中 xxx 为文件名。.实验 2 初级程序的编写与调试实验(一)一实验目的 1进一步熟悉DEBUG命令;2掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址计算;3熟悉数据传送指令、算术运算指令、逻
13、辑指令、数据串传送程序和数据串传送指令MOVS、STOS及重复前辍REP;4掌握简单的汇编语言程序编写与调试。二实验内容 1内存操作数及各种寻址方式使用;2求累加和程序;3多字节加法程序;4数据串搬家程序;5段寄存器概念及字符串传送指令练习。三实验要求 1仔细阅读有关 DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子;2阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令 MOVS、STOS及重复前辍 REP 的内容;3用 DEBUG 的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬家程序段。四实验环境 PC 微机;DOS 操作系统或 Window
14、s 操作系统;MASM.EXE,LINK.EXE,DEBUG.COM 或宏汇编集成环境。五实验步骤 1内存操作数及各种寻址方式使用 MOV AX,1234 MOV 1000,AX MOV BX,1002 MOV BYTE PTRBX,20 MOV DL,39 INC BX MOV BX,DL DEC DL MOV SI,3 MOV BX+SI,DL.MOV BX+SI+1,DL MOV WORD PTRBX+SI+2,2846 步骤:(1)用A命令键入上述程序,并用T命令逐条运行。(2)每运行一条有关内存操作数的指令,要用D命令检查并记录有关内存单元的内容并注明是什么寻址方式。注意D命令显示结
15、果中右边的ASCII字符及双字节数存放法。.2求累加和程序:程序:MOV BX,1000 MOV CX,10 SUB AX,AX LOP:ADD AL,BX ADC AH,0.INC BX J:LOOP LOP INT3 步骤:(1)用A命令将程序键入到100H开始的内存中,在键入时记下标号LOP和J的实际地址,在键入LOOP指令时LOP用实际地址值代替;(2)用命令N AA 将此程序命名为文件AA(文件名可任取);(3)用R命令将BX:CX改为程序长度值(即最后一条指令后面的地址减去开始地址;(4)用命令W 100将此程序存到AA命名的磁盘文件中;(5)用命令Q退出DEBUG;(6)用命令D
16、EBUG AA再次调入DEBUG和文件AA,可用U命令检查调入程序;若调入DEBUG时忘了加AA文件名,可用N命令和L命令将文件调入;(7)用E命令在内存地址1000H处键入16个数字;(8)用命令G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查AX,BX的值是否符合你的预计值;(9)用T命令运行一步,观察程序方向(IP值)和CX值是否与你的估计一样,若不一样,检查程序是否有错;(10)重复G、J与T,再检查AX是否正确;(11)用G命令使程序运行到结束,检查AX值是否正确。.3多字节加法程序 程序:MOV DI,1000 MOV CX,8 MOV SI,2000 CLC L
17、OP:MOV AL,SI ADC DI,AL INC SI INC DI LOOP LOP INT 20 步骤:(1)用命令键入此程序(2)用E命令在1000H开始处键入一个8字节被加数,在2000H开始处键入一个8字节加数,均为低字节在前面。分步计算并得到结果,如下图所示:.4数据串搬家程序(1)用A命令键入下列程序:MOV SI,1000 MOV DI,2000 MOV CX,0F LOP:MOV AL,SI MOV DI,AL INC SI INC DI LOOP LOP INT 20(2)用A命令DB伪指令在1000H键入下列字符串:IBM_PC COMPUTER(3)用G命令运行此程
18、序,并用D命令检查目的地址处的字符与源串a是否一致。.5段寄存器概念及字符串传送指令练习(1)用A命令键入下列程序:MOV SI,0 MOV DI,0 MOV AX,1000 MOV DS,AX MOV AX,1500 MOV ES,AX MOV CX,0F CLD REP MOVSB INT 20(2)用A命令DB伪指令在1000:0000处键入字符串IBM_PC COMPUTER,并用D命检查之(3)用D命令检查0F00:1000处内容,看是否一样。为什么?(4)用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。(5)修改此程序,使ES与DS为同一值,以减少一条
19、指令,而源物理地址和目的物理地址(是多少?)仍和原来一样。.6自编程序 用16位减法指令编一个32位(4字节)数减法程序,两个源数及结果存放地址同多字节加法程序,调试并.做记录。六实验报告要求 1各项实验记录;2要求你修改的程序的清单(修改后)和调试记录;3自编程序原稿及调试后修正稿,写出原稿错在那里。七思考题 1MOV BYTE PTRBX,20 MOV WORD PTRBX+SI+2,2846 上述指令中BYTE PTR及WORD PTR伪操作不加行不行?试一试。2用G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?),是否正确?3将多字节加法程序中的INT 20H指令改为INT
20、 3,有何区别?若这条指令不加,行不行?试一试。.4数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把1000H开始的字符串搬到1002H开始的地方去?修改程序以做到这一点。MOV SI,100E MOV DI,1010 MOV CX,0F LOP:MOV AL,SI MOV DI,AL DEC SI DEC DI LOOP LOP INT 20.或者 DB IBM_PC COMPUTER MOV SI,100E MOV DI,1010 MOV AX,137E MOV ES,AX MOV CX,0F STD REP MOVS INT 20.实验3 初级程序的编写与调试实验(二)
21、一实验目的 1掌握无条件转移指令、条件转移指令;2掌握利用DOS功能调用INT21H的2号和9号功能进行屏幕显示的方法;3掌握直接向视频RAM送ASCII码进行屏幕显示的方法;4掌握屏幕字符显示程序编写与调试。二实验内容 1 字符、字符串的屏幕显示;2 直接向VRAM送ASCII码显示字符;3 用字符搜索法确定字符串长度;4 16进制数化ASCII码的一般方法(显示内存内容)。三实验要求 1 仔细阅读有关无条件转移指令、条件转移指令的内容;2 阅读利用 DOS 功能调用 INT21H 的 2 号和 9 号功能进行屏幕显示的内容;3阅读实验指导书中的字符串屏幕显示程序、字符屏幕显示程序、直接向
22、VRAM 送 ASCII 码显示字符程序、用字符搜索法确定字符串长度程序、16 进制数化 ASCII 码的一般方法的程序段,调试上述程序。四实验环境 PC 微机;DOS 操作系统或 Windows 操作系统;MASMEXE,LINKEXE,DEBUGCOM 或宏汇编集成环境。五实验步骤 1利用INT 21 0AH号功能调用显示字符串。(1)用A命令在100H处键入下列程序:MOV AH,9 MOV DX,110 INT 21 INT 20(2)用A命令在110H处键入下列字符串的ASCII码:DB This is a sample!$(3)用N命令和W命令将此程序(包括数据区)存入文件名为AA
23、CcOM的磁盘文件中。(存入前BX:CX必须置为文件长度值)。(4)用Q命令退出DEBUG。(5)在DOS命令下打AA,运行此程序,即在屏幕上显示This is a sample!字符串,若不出现,用DEBUG检查程序有无错误。.2利用INT 21H 2号功能显示字符(1)用A命令在100H处键入下列程序:XOR DL,DL MOV CX,100 LOP:MOV AH,2 INT 21 INC DL PUSH CX MOV CX,8 DELY:PUSH CX MOV CX,0 J:LOOP J POP CX LOOP DELY POP CX LOOP LOP INT 20(2)用G命令运行程序
24、,即在屏幕上依次缓慢的显示256个ASCII字符。仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?(3)按CTRL+BREAK退出此程序,若一次不行可多做几次。.3直接向VRAM送ASCII码显示字符(1)用A命令在100H处键入下列程序 MOV AX,B000 MOV DS,AX XOR AL,AL XOR BX,BX MOV CX,100 LOP:MOV BX,AL INC BX INC AL PUSH CX MOV CX,8 DELY:PUSH CX MOV CX,0 J:LOOP J POP CX LOOP DELY POP CX
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 南昌大学 汇编语言 实验 报告
限制150内