汇编语言实验报告.pdf
《汇编语言实验报告.pdf》由会员分享,可在线阅读,更多相关《汇编语言实验报告.pdf(53页珍藏版)》请在三一文库上搜索。
1、汇编语言实验报告 专业: 班级: 姓名: 学号: 2011 年 12 月 14 日 2 目录 实验 1 利用 DEBUG 调试汇编语言程序段 3 实验 2 初级程序的编写与调试实验(一).11 实验 3 初级程序的编写与调试实验(二) 20 实验 4 汇编语言程序上机过程 . 28 实验 5 分支程序实验 . 33 实验 6 循环程序实验 . 40 实验 7 子程序实验 . 45 3 实验 1 利用 DEBUG 调试汇编语言程序段 一实验目的 1熟悉 DEBUG 有关命令的使用方法; 2利用 DEBUG 掌握有关指令的功能; 3利用 DEBUG 运行简单的程序段。 二实验内容 1进入和退出DE
2、BUG 程序; 1)开始 运行 ,输入 cmd,点确定进入命令窗口 2)在命令窗口中输入dubug 进入 debug 程序 3)进入 debug 窗口后 ,输入 q 命令退出debug 2学会 DEBUG 中的 1)D 命令(显示内存数据D 段地址 :偏移地址) 例 1:-D100 ;显示 DS 段, 0100 开始的 128 个节内容 4 说明 : 指定要显示其内容的内存区域的起始和结束地址,或起始地址和长度。 D SEGREG起始地址 L 长度 ;显示 SEGREG 段中 (缺省内默认为DS), 以起始地址 (缺省内为当前的偏移地址), 开始的 L 长度 (缺省内默认为128)个字节的内容
3、 . 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 个字节内容 5 D 100 L
4、10 ; 显示 DS 段, 100H 开始的 8H 个字节内容 2)E 命令(修改指定内存) -E100 11 22 33 44 55 66 77 88 -D 100 结果: 0AF1 : 0100 11 22 33 44 55 66 77 88 例 2:-E 100 : E 地址数据表;从指定的地址开始用数据表给定的数据修改存储单元。 E DS:100 ea hf ff ; 6 3)R 命令(显示当前寄存器的内容) 显示修改寄存器命令R R;显示所有寄存器和标志位状态; 显示当前CS:IP 指向的指令。 显示标志时使用的符号: 标志标志 =1 标志 =0 OF OV NV DF DN UP
5、IF EI DI SF NG PL ZF ZR NZ AF AC NA PF PE PO CF CY NC 4)T 命令(设置陷井,单步执行) 5)A 命令(将 指令直接汇编成机器码输入到内存中。) 汇编命令A A 地址 ;从指定的地址开始输入符号指令;如省略地址,则接着上一个A 命令的最后 一个单元开始;若第一次使用A 命令省略地址,则从当前CS:IP 开始(通常是CS:100)。 注释 : 在 DEBUG 下编写简单程序即使用A 命令。 每条指令后要按回车。 不输入指令按回车,或按Ctrl+C 结束汇编。 支持所有8086 符号硬指令,伪指令只支持DB、DW ,不支持各类符号名。 使用 A
6、 命令在 0100H 开始输入指令mov ax, 10 inc cx mov bl, al 单步执行上述指令 7 6)G 命令等的使用(执行A 命中输入的汇编指令) 运行程序命令G G;从 CS:IP 指向的指令开始执行程序,直到程序结束或遇到INT 3 。 G=地址;从指定地址开始执行程序,直到程序结束或遇到INT 3 。 G 断点 1,断点 2,断点 10;从 CS:IP 指向的指令开始执行程序,直到遇到断点。 G=地址断点 1,断点 2,断点 10 G ;从 CS:IP 指向的指令开始执行程序。 G=100 ;从指定地址开始执行程序。 G=100 105 110 120 使用 A 命令在
7、 0100H 开始输入指令mov ax, 10 inc cx mov bl, al int 3 然后使用g 命令执行 3用 DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、 串操作指令的功能。、 乘法验证: 除法验证: 8 加法验证: 减法验证: 9 带进位的减法: 堆栈操作指令: 串操作指令: 10 三实验要求 1仔细阅读有关DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子; 四实验环境 PC 微机 DOS 操作系统或Windows 操作系统 MASM.EXE,LINK.EXE,DEBUG.COM 或宏汇编集成环境 五实验步骤 1在 DOS 提示符下,进
8、入DEBUG 程序; 2在 DOS 目录下启动DEBUG; 3详细记录每一步所用的命令,以及查看结果的方法和具体结果。 六思考题 启动 DEBUG 后,要装入某一个.EXE 文件,应通过什么方法实现? 答:假如有一个a.exe 文件,我们可以在dos 环境下输入 debug a.exe 这样便可以装入一个.exe 文件 七.参考资料 汇编实验指导书 IBM-PC 汇编语言程序设计(第二版) 11 实验 2 初级程序的编写与调试实验(一) 一实验目的 1进一步熟悉 DEBUG 命令; 2掌握数据在内存中的存放方式和内存操作数的几种寻址方式,段寄存器和物理地址 计算; 3熟悉数据传送指令、算术运算
9、指令、逻辑指令、数据串传送程序和数据串传送指令 MOVS 、STOS及重复前辍 REP; 4掌握简单的汇编语言程序编写与调试。 二实验内容 1内存操作数及各种寻址方式使用; 2求累加和程序; 3多字节加法程序; 4数据串搬家程序; 5段寄存器概念及字符串传送指令练习。 三实验要求 1仔细阅读有关DEBUG 命令的内容,对有关命令,要求事先准备好使用的例子; 2阅读数据传送指令、算术运算指令、逻辑指令、数据串传送程序和数据串传送指令 MOVS 、STOS 及重复前辍REP 的内容; 3用 DEBUG 的有关命令调试本实验中的求累加和程序、多字节加法程序、数据串搬 家程序段。 四实验环境 PC 微
10、机; DOS 操作系统或Windows 操作系统; 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 12 MOV SI,3 MOV BX+SI ,DL MOV BX+SI+1 , DL MOV WORD PTRBX+SI+2,2846 步骤: (1) 用A命令键入上述程序,并用T命令逐条运行。 (2) 每运行一条有关内存操作数的指令,要用D
11、命令检查并记录有关内存单元的内容并 注明是什么寻址方式。注意D命令显示结果中右边的ASCII 字符及双字节数存放法。 2求累加和程序: 程序: 13 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改为程序长度值(即最后一条指令后面的地址
12、减去开始地址; (4)用命令 W 100将此程序存到AA命名的磁盘文件中; (5)用命令 Q退出 DEBUG ; (6)用命令 DEBUG AA 再次调入 DEBUG 和文件 AA ,可用 U命令检查调入程序; (7)用 E命令在内存地址1000H处键入 16个数字; (8)用命令 G=100 J(J用实际地址代替),使程序运行并停在断点J上,检查 AX,BX的值 是否符合你的预计值; (9)用 T命令运行一步,观察程序方向(IP值)和CX 值是否与你的估计一样,若不一样, 检查程序是否有错; (10)重复 G、J与 T,再检查 AX 是否正确; 14 (11)用 G命令使程序运行到结束,检查
13、AX值是否正确。 3多字节加法程序 程序: MOV DI ,1000 MOV CX, 8 MOV SI,2000 CLC LOP:MOV AL ,SI ADC DI ,AL INC SI INC DI LOOP LOP INT 20 步骤: (1) 用命令键入此程序。 (2) 用E命令在 1000H开始处键入一个8字节被加数, 在2000H开始处键入一个8字节加数, 均为低字节在前面。 15 4数据串搬家程序 (1)用 A命令键入下列程序: MOV SI,1000 MOV DI ,1500 MOV CX,0FH LOP:MOV AL ,SI MOV DI ,AL INC SI INC DI L
14、OOP LOP INT 20 (2)用 A命令 DB 伪指令在 1000H键入下列字符串: IBM_PC COMPUTER (3)用 G命令运行此程序,并用D命令检查目的地址处的字符与源串是否一致。 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 16 REP MOVSB INT 20 (2) 用A命令 DB 伪指令在 1000:0000处键入字符串IBM_PC COMPUTER,并用 D命检查 (3) 用D命令检查 0F
15、00:1000处内容,看是否一样。为什么? (4) 用G命令运行此程序,检查目的地址1500:0000处内容。并记下DS与ES值。 此时的 DS和ES的值分别为: (5) 修改此程序,使ES与DS为同一值,以减少一条指令,而源物理地址和目的物理地址 (是多少 ?)仍和原来一样。 17 6自编程序 用16位减法指令编一个32位(4字节 )数减法程序, 两个源数及结果存放地址同多字节加法 程序,调试并做记录。 4字节减法程序源代码 1397:0100 MOV SI,1000 1397:0103 MOV CX,4 1397:0106 MOV DI,2000 1397:0109 CLC 1397:01
16、0A MOV AL,SI 1397:010C SBB DI,AL 1397:010E INC SI 1397:010F INC DI 1397:0110 LOOP 010A 1397:0112 INT 20 1397:0114 调试和运行 结果运行正确 18 六思考题 1MOV BYTE PTRBX,20 MOV WORD PTRBX+SI+2,2846 上述指令中 BYTE PTR 及WORD PTR 伪操作不加行不行?试一试。 2用 G命令运行多字节加法程序,并用D命令检查其结果(存放在哪里?),是否正确? 3将多字节加法程序中的INT 20H 指令改为 INT 3 ,有何区别?若这条指令
17、不加,行不 行?试一试。 4数据串搬家程序中的目的地址改为1002H,再运行此程序,看能不能把 1000H开始的 字符串搬到 1002H开始的地方去?修改程序以做到这一点。 19 不能结果不正确 七.参考资料 汇编实验指导书 IBM-PC 汇编语言程序设计(第二版) 20 实验 3 初级程序的编写与调试实验(二) 一实验目的 1掌握无条件转移指令、条件转移指令; 2掌握利用 DOS功能调用 INT21H 的2号和 9号功能进行屏幕显示的方法; 3掌握直接向视频RAM 送 ASCII 码进行屏幕显示的方法; 4掌握屏幕字符显示程序编写与调试。 二实验内容 1 字符、字符串的屏幕显示; 2 直接向
18、 VRAM 送 ASCII 码显示字符; 3 用字符搜索法确定字符串长度; 4 16进制数化 ASCII 码的一般方法 (显示内存内容 )。 三实验要求 1 仔细阅读有关无条件转移指令、条件转移指令的内容; 2 阅读利用DOS 功能调用 INT21H 的 2 号和 9 号功能进行屏幕显示的内容; 3阅读实验指导书中的字符串屏幕显示程序、字符屏幕显示程序、直接向VRAM 送 ASCII 码显示字符程序、用字符搜索法确定字符串长度程序、16 进制数化ASCII 码的一般 方法的程序段,调试上述程序。 四实验环境 PC 微机; DOS 操作系统或Windows 操作系统; MASM EXE, LIN
19、K EXE,DEBUG COM 或宏汇编集成环境。 五实验步骤 1利用 INT 21 0AH 号功能调用显示字符串。 (1)用 A命令在 100H处键入下列程序: MOV AH,9 MOV DX,110 INT 21 INT 20 21 (2)用 A命令在 110H处键入下列字符串的ASCII 码: DB This is a sample!$ (3)用N命令和 W命令将此程序 (包括数据区 )存入文件名为 AAOM的磁盘文件中。 (存 入前 BX: CX 必须置为文件长度值)。 (4)用 Q命令退出 DEBUG 。 (5)在 DOS命令下打 AA ,运行此程序,即在屏幕上显示This is a
20、 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 22 (2)用G命令运行程序, 即在屏幕上依次缓慢的显示256个ASCII 字符。 仔细观察每个字 符,和 IBM-PC ASCII 码表对照,看07H-0DH
21、 处控制字符显示结果与表上有何不同? (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 23 LOOP LOP INT 20 (2)用 N命令和 W命令将此程序存入BB.C
22、OM 文件中。 (一定要先存入 !) (3)用 G命令运行此程序,仔细观察每一个ASCII 码显示结果,并和字符表及上一道程 序运行情况进行对照,其控制字符区(07-0DH) 显示结果和 INT 21H 2 号功能调用有何不同? 4用字符搜索法确定字符串长度 (1)用 A命令在 100H开始的内存处键入下列程序 JMP START 24 DB This is the program to measure DB the length of a string!$ START :MOV BX,102 MOV AL,24 XOR CL,CL LOP:CMP AL,BX JZ EXIT INC BX I
23、NC CL JMP LOP EXIT :INT3 (2)用 G命令运行此程序,并检查CL的统计长度是否与你自己统计的实际长度是否一 样? 25 5用字符搜索法确定字符串长度 (1)用 A命令在 100H处键入下列程序: MOVSI ,0 MOVBL ,10 LOP:MOVDL ,SI MOVCL ,4 SHRDL ,CL CMPDL ,0A JC J1 ADD DL,7 J1:ADD DL ,30 MOV AH,2 INT 21 MOV DL,SI AND DL,0F CMP DL,0A JC J2 ADD DL,7 J2:ADD DL ,30 MOV AH,2 INT 21 MOV DL,2
24、0 MOV AH,2 INT 21 INC SI DEC BL JNZ LOP INT 20 26 (2)用 N,W命令将此程序用CCCOM 文件名存入磁盘。 (3)用 Q命令退出 DEBUG 。 (4)在 DOS命令状态下直接运行CCCOM 命令文件,应在屏幕上显示出内存从0000H 开始的 16个字节的内容,若有错误,用DEBUG 检查之。 (5)自编程序:修改上面程序,使除以16进制数形式显示内存内容外,还能在其右边 显示该 16进制码所对应的ASCII 字符, 07-0D 的控制字符用 代替。 在DEBUG 环境下打开 程序,从最后一条指令int 20 开始修改,具体如下: MOV
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 实验 报告
链接地址:https://www.31doc.com/p-5112390.html