广东外语外贸大学 信息科学技术学院 《汇编语言与计算机组成原理》 第一篇 汇编语言 调试程序DEBUG.

Slides:



Advertisements
Similar presentations
Assembly Language Programming 湛江师范学院 汇编语言程序设计实验课件 主讲教师:王 晓 晔.
Advertisements

LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
计算机体系结构 应用程序 软件 操作系统 编译器 固件 指令集 输入输出 CPU 硬件 内存 (I/O) 集成电路 元件,逻辑门.
第四章 80x86汇编语言程序设计 第一节 汇编语言概述 第二节 汇编语言语句的组成 第三节 汇编语言的语句 第四节 宏汇编指令 第一节 汇编语言概述 第二节 汇编语言语句的组成 第三节 汇编语言的语句 第四节 宏汇编指令 第五节 编写完整的汇编语言程序 第六节 汇编语言程序设计.
第十一章 汇编语言程序的开发 第一节 汇编语言程序的开发过程 .ASM .EXE .MAP .LST .CRF .OBJ 开始 编辑程序
C语言实验 第一课 标题:学号+姓名.
C++中的声音处理 在传统Turbo C环境中,如果想用C语言控制电脑发声,可以用Sound函数。在VC6.6环境中如果想控制电脑发声则采用Beep函数。原型为: Beep(频率,持续时间) , 单位毫秒 暂停程序执行使用Sleep函数 Sleep(持续时间), 单位毫秒 引用这两个函数时,必须包含头文件
在PHP和MYSQL中实现完美的中文显示
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
第5章 汇编语言程序设计 5.1 宏汇编语言的基本语法 5.2 伪指令 5.3 宏指令 5.4 汇编语言程序的结构
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
第2章 汇编语言与汇编程序 ——8086/8088指令系统 mov ax,12h call display Jmp 1234h.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
第4章 8086汇编语言程序设计 几个概念 8086汇编语言的语句 8086汇编中的伪指令 8086汇编中的运算符 汇编语言程序设计
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
保留版权(C) 秦晓梅 汇编语言程序设计 实验教程 保留版权(C) 秦晓梅
走进编程 程序的顺序结构(二).
微机原理与接口技术 ——80x86微处理器 西安邮电大学 计算机学院 范琳.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第一次实验 DEBUG基本命令与数据传输指令
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
Zhao4zhong1 (赵中) C语言指针与汇编语言地址.
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
《微机系统与接口》 《微机实验》课程资料 系网站:automation.seu.edu.cn 课程下载.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
逆向工程-汇编语言
第四章 附件 (应用程序软件包).
第二章 80x86计算机组织 x86微处理器 2.2 基于微处理器的计算机系统构成 2.3 中央处理机 2.4 存储器
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
Java语言程序设计 清华大学出版社 第8章 输入输出流(1).
Gzip编译及调试 曹益华
SOA – Experiment 2: Query Classification Web Service
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
第二章 登录UNIX操作系统.
C语言程序设计 主讲教师:陆幼利.
学习目标 1、什么是字符集 2、字符集四个级别 3、如何选择字符集.
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
姚金宇 MIT SCHEME 使用说明 姚金宇
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
工业机器人知识要点解析 (ABB机器人) 主讲人:王老师
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
第4章 Excel电子表格制作软件 4.4 函数(一).
本节内容 内存复制指令 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
C++语言程序设计 C++语言程序设计 第二章 基本数据类型与表达式 第十一组 C++语言程序设计.
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
College of Computer Science & Technology
Visual Basic程序设计 第13章 访问数据库
微机原理与接口技术 ——8086微处理器 西安邮电大学 计算机学院 范琳.
本节内容 C语言的汇编表示 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
Python 环境搭建 基于Anaconda和VSCode.
本节内容 通用寄存器 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
实验目的:掌握数据的顺序存储结构及它们在计算机中的操作。 实验内容:
Chapter 7&8 Assembly Programming
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
C++语言程序设计 C++语言程序设计 第一章 C++语言概述 第十一组 C++语言程序设计.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
数据表示 第 2 讲.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
第四章 UNIX文件系统.
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
跟我一起学编程系列课程: 第一篇汇编语言 16位汇编.
Presentation transcript:

广东外语外贸大学 信息科学技术学院 《汇编语言与计算机组成原理》 第一篇 汇编语言 调试程序DEBUG

调试程序的使用 熟练使用调试程序是学习和掌握汇编语言的关键! 教学重点 本讲后需做实验,地点:实验楼 了解DEBUG  调试程序的使用 熟练使用调试程序是学习和掌握汇编语言的关键! 教学重点 了解DEBUG DEBUG中几个主要命令的熟练使用 用DEBUG写一个汇编程序 本讲后需做实验,地点:实验楼

DEBUG的定义 DEBUG是专门为汇编语言设计的调试工具 可以检查、修改、存储单元和寄存器的内容 可以装入、存储及运行目标程序 但一般人们更多的是用它作为调试工具 DEBUG是汇编语言程序员分析、跟踪、修改指令程序的有效工具。

DEBUG启动时的初始化动作 段寄存器CS、DS、ES和SS置为DEBUG程序后的第一个段。 指令指针寄存器IP置为100H(程序段前缀PSP后的第一个语句) 堆栈指针SP置为堆栈段的段末 其余通用寄存器均置为0 ,标志寄存器置为下述状态:NV  UP  EI PL  NE   NA   PO   NC 如果DEBUG命令行含有文件名,段寄存器DS和ES指向程序段前缀PSP(Program Segment Prefix) ,寄存器BX和CX含有程序长度

DEBUG常用命令-D命令 显示存储单元的命令 格式为:D [address] 或 D[range] 例1: D 100 功能:查看偏移地址为100H处存储单元的内容 例2: D 100 200 功能:查看偏移地址为100H~200H处存储单元的内容 我们知道:物理地址是由段地址:偏移地址来决定的。这里没写段地址默认为DS。若要查看别的段需用段超越前缀,如:D ES:100

DEBUG常用命令-E命令 输入或修改存储单元命令(edit) 用给定的内容列表来替代指定范围的存储单元内容,格式:E 地址 [内容列表] 例1:-E DS:100 F3‘XYZ’8D ;用五个字节替代存储单元DS:0100到0104的原内容 逐个单元相继修改的方法,格式:E 地址 例2:-E CS:100 ;回车后可键入新的内容

DEBUG常用命令-F命令 直接填写存储单元内容的命令Fill 格式:Fill range list 例如:F  CS:0100  L5  F3'XYZ'8D ;使CS:0100-0104单元包含指定的五个字节的内容 如果list中的字节数超过指定的范围,则忽略超过的项 如果list的字节数小于指定范围,则重复使用list填入,直到填满指定的所有单元为止

DEBUG常用命令-R命令 检查修改寄存器的命令-R(register) 显示CPU内所有寄存器内容及标志位状态 格式: R 显示和修改某个寄存器内容 格式:R 寄存器名 例:R CX 显示和修改标志位状态 格式:R F

DEBUG常用命令-A命令 汇编命令A(assemble) 格式:A [address] 在指定地址处开始编写汇编程序 该命令允许键入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。 必须注意:DEBUG把键入的数字均看成十六进制数,所以如要键入十进制数,则其后应加以说明,如100D。

A命令举例: -A 127C:0100 mov dx,010B 127C:0103 mov ah,09 127C:0105 int 21 127C:0107 mov ah,4c 127C:0109 int 21 127C:010B db ‘THIS IS AN EXAMPLE’,’$’ 127C:011E -r cx CX 0000 :011E -n 2.com -w Writing 0011E bytes -q C:\>2

DEBUG常用命令-G命令 运行命令G(go) 格式:G[=地址1][地址2[地址3…]] 其中,地址1指定了运行的起始地址 如不指定则从当前的CS:IP开始运行。 后面的地址均为断点地址 当指令执行到断点时,就停止执行并显示当前所有寄存器及标志位的内容,和下一条将要执行的指令。

DEBUG常用命令-T命令 跟踪命令T(Trace) 逐条指令跟踪 多条指令跟踪 格式:T[=地址] 从指定地址起执行一条指令后停下来,显示所有寄存器内容及标志位的值。 如未指定则从当前的CS:IP开始执行。  多条指令跟踪 格式:T[=地址][条数] 从指定地址起执行n条指令后停下来,n由条数指定。

DEBUG常用命令-U命令 反汇编命令U(Unassemble) 从指定地址开始,反汇编32个字节 对指定范围内的存储单元进行反汇编 格式为: U [range] 例如: U 100  10C 从偏移地址为100H处开始反汇编10CH个字节

DEBUG常用命令-N命令 给编写的汇编程序命名N(name) 格式:N filespecs [filespecs] 命令把两个文件标识符(文件名)格式化写在CS:5CH和CS:6CH的两个文件控制块中,以便在其后用L或W命令把文件装入或存盘。 filespecs的格式可以是:[d:][path]filename[.exe] 例如: -N  test.exe -L 结果把文件test.exe从外存装入内存储器。

DEBUG常用命令-L命令 程序装入命令L(load) 将程序装入已在CS:5CH中格式化了的文件控制块所指定的文件 格式:L 或 L address 若命令没规定地址,则文件装入到CS:100开始的内存区中 若命令规定了地址,则装入到从指定地址开始内存区域中 但对具有扩展名.com或.exe 的文件,则始终是装入到CS:100的内存区中,即使指定了地址,此地址也被忽略。

DEBUG常用命令-W命令 把数据写入指定的文件中W(write) 使用W命令之前需要注意的地方: 把内存区域中的数据写入到CS:5CH处的文件控制块所规定的文件中。 格式:W [write address] 若没指定地址则从内存CS:100处开始,若给出了地址,则从指定的地址开始 使用W命令之前需要注意的地方: CS:5CH中必须有写入文件的文件控制块(用N命令) BXCX(CX为低字,BX为高字)中存入程序段的长度 可以利用R BX和R CX写入文件的长度(字节数)

DEBUG常用命令-Q命令 退出DEBUG程序的命令Q(quit) 退出DEBUG,返回到DOS 该命令无存盘功能,如需存盘应先使用W命令

常用的DOS功能调用 书本的第8章专门讲述中断程序设计 而在讲第8章以前,我们需要用到几个常用的DOS功能调用,所以这里先简单介绍几个 使用方法: 1.设置入口参数(有些不需要设置的就不设置) 2.功能调用号送AH寄存器 3.发软中断指令“INT 21H”

4C号功能调用 功能:退回到DOS(操作系统)状态 入口参数:无 出口参数:无 该号功能调用等价于INT 20H中断

-A mov ah,4c;退出DEBUG,回到DOS int 21 -G;执行程序命令

1号功能调用 功能:从键盘上读入一个字符,并将该字符回显在屏幕上 入口参数:无 出口参数:AL=读到字符的ASCII码 说明:如果读到的字符是ctrl+c或ctrl+break,则结束程序

-A mov ah,01;调用1号功能,接受并回显字符 int 21 mov ah,4c;退出DEBUG,回到DOS int 21 1号功能调用举例 -A mov ah,01;调用1号功能,接受并回显字符 int 21 mov ah,4c;退出DEBUG,回到DOS int 21 -G;连续执行程序命令 或者使用单步调试命令,来查看,用户输入的字符是否存入AL寄存器中? -T;单步调试程序 -G=100 104;只执行一部分指令

2号功能调用 功能:向屏幕写一字符。 入口参数:DL=输出字符的ASCII码 出口参数:无 说明:在显示输出时检查是否按ctrl+c或ctrl+break键,如果是则结束程序

2号功能调用举例 -A mov DL,31;31=字符‘1’的ASCII码值 mov ah,02;调用2号功能,显示DL中的字符 int 21 mov ah,4c;退出DEBUG,回到DOS -G;执行程序命令

9号功能调用 功能:在屏幕上显示一个字符串。 入口参数:DS:DX=需要输出字符串的首地址,字符串以字符‘$’为结束标志。 出口参数:无 说明:在显示输出时检查是否按ctrl+c或ctrl+break键,如果是则结束程序

-A mov dx,10B;dx=字符串的首地址 9号功能调用举例 mov ah,09 ;调用9号显示字符串的功能号 int 21h mov ah,4c ;退出DEBUG,回到DOS int 21 10B:db ‘hello’,’$’ ;注意需要以‘$’为结束符 -G ;连续执行程序命令

例题 要求: 用debug编写程序,输出指定的两行字符串 串1: ‘THIS IS AN EXAMPLE’,’$’ 串2: ‘123456789ABCDEF’,’$’ 注意换行的操作。

例题原代码 -A MOV DX,011C ;dx=串1的首地址 MOV AH,09 ;调用9号功能显示串1 INT 21H MOV DL,0D ;调用2号功能,显示‘回车’ MOV AH,02 MOV DL,0A ;调用2号功能,显示‘换行’ MOV DX,012F ;dx=串2的首地址 MOV AH,09 ;调用9号功能显示串2 INT 20H ;退回到DOS状态 011C:DB ‘THIS IS AN EXAMPLE’,’$’ ;定义数据 012F:DB ‘123456789ABCDEF’,’$’

实验一、DEBUG的使用 实验内容: 练习debug的常用指令 用debug编写一个程序,要求:在屏幕上输出2行: 第1行为您的班级英文名 第2行为您的汉语拼音的姓名 作业取名:ex11.com,并写入硬盘。10月20日前交。

总结 Debug的几个主要命令需要掌握 Debug可以编写简单的汇编程序,这些程序所有的段都在同一个段中

汇编语言程序上机过程 1 建立汇编语言的工作环境 2 上机操作过程 返 回

建立汇编语言的工作环境 编辑程序,文件名 EDIT.COM 汇编程序,文件名 MASM.EXE 连接程序,文件名 LINK.EXE 调试程序,文件名 DEBUG.EXE LIB.EXE,库管理程序 CREF.EXE,符号索引文件处理程序 EXE2BIN.EXE,将EXE转换为COM的文件格式转换程序 返 回

上机操作过程 1.编辑 2.汇编 3.连接 4.调试 1.对编辑完成的源程序在存盘时扩展名必须加写.ASM 2.一定要严格遵守汇编语言书写格式及段结构的格式来编写程序 2.汇编 汇编过程就是将汇编语言源程序转换成机器能够识别的目标代码程序,即OBJ的二进制文件。还可生成扩展名为.LST的列表文件,扩展名为.CRF的符号索引文件。 3.连接 所谓连接是用连接程序LINK.EXE把若干个经汇编后产生的.OBJ文件及指定的库文件连接起来,产生可执行的.EXE文件。 4.调试 返 回