微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日.

Slides:



Advertisements
Similar presentations
第2章 微处理器 2.1 概述 /8086微处理器 微处理器 X86/Pentium微处理器
Advertisements

第一章 计算机基础知识 计算机的发展简史 1 计算机软件系统 6 计算机的定义和分类 2 微型计算机的组成 7 计算机的特点和用途 3
输入输出程序设计 输入输出的基本概念 无条件方式输入输出 查询方式输入输出 中断方式输入输出.
计算机体系结构 应用程序 软件 操作系统 编译器 固件 指令集 输入输出 CPU 硬件 内存 (I/O) 集成电路 元件,逻辑门.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
微型计算机技术 教 学 指 导(七) 太原广播电视大学 郭建勇.
第10章 DOS功能调用与BIOS中断调用.
第7章 8086/8088汇编语言程序设计 7.1 引言 7.2 顺序程序设计 7.3 分支结构程序设计 7.4 循环结构程序设计
第四章 汇编语言 程序设计 任课教师:王晓甜
第一章 计算机基础知识 第一节 计算机概述 一、计算机的基本组成和工作原理 二、有关术语 三、计算机发展简史 四、微型计算机概述
汇编语言与接口技术 教师:范新民.
本周实验安排 实验内容:(P231)人名排序的例子。
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
单片机原理与应用.
第3章 80x86汇编语言程序设计(下).
4.1 汇编语言 4.2 顺序结构程序 4.3 分支程序设计 4.4 循环程序设计 4.5 子程序设计
第3章 80x86汇编语言程序设计(上) 16位汇编版本 时间不够的情况下只讲16位汇编.
9.1 可编程并行输入/输出接口芯片8255A 9.2 可编程计数器/定时器 可编程串行输入/输出接口芯片8251A
3.3.5 程序控制指令 控制转移指令分为: 转移指令 循环控制指令 调用和返回指令 中断指令.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月26日.
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
汇编语言程序设计 Assembly Language Programming
第三章 寻址方式与指令系统 3.1 寻址方式 一条指令通常由两大部分构成: 操作码 操作数
微机原理与接口技术 第3章 8086指令系统 朱华贵 2015年09月25日.
第2章 MCS-51单片机指令系统与汇编语言程序设计
微机原理与接口技术 第2章 8086系统结构 朱华贵 2015年09月17日.
汇编语言程序设计 吴 向 军 中山大学计算机科学系
第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第九章 计数器和定时器电路 第一节 概述 第二节 Intel 8253的控制字 第三节 Intel 8253的工作方式 第四节 Intel 8253在IBM PC机上的应用.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月10日.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月05日.
输入输出与中断 主要内容 CPU与外设之间数据传送方式 中断技术 8086中断系统和中断处理.
第八章 输入输出程序设计 总线 CPU MEM I/O接口 I/O设备.
第8章 寻址方式与指令系统.
第4章 汇编语言程序设计 4.1 程序设计语言概述 4.2 汇编语言的程序结构与语句格式 4.3 汇编语言的伪指令
微机原理及应用 主讲:谢维成 西华大学 电气信息学院 1.
微机原理及应用 主讲:郑海春.
第一章 8086程序设计 第二章 MCS-51程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
汇编语言程序设计课程设计 第二次实验 DEBUG基本命令与算术运算指令
第二章 8086/8088系统结构 主要内容 8086/8088微处理器的内部结构 8086/8088 CPU 的引脚与功能
微型计算机原理及应用.
第3章 微型计算机输入输出接口 3.1 输入/输出接口 3.2 输入输出数据传输的控制方式 3.3 开关量输入输出接口 欢迎辞.
第六章 子程序结构 §6.1 子程序的设计方法 §6.2 嵌套与递归子程序 §6.3 子程序举例 §6.4 DOS系统功能调用.
第 13 章 中断系统.
條件處理.
第九章 高级宏汇编语言 9.1 结构 结构就是将逻辑上有一定关系的一组数据,以某种方式组合在一起所形成的数据形式。
第5章 循环与分支程序设计 学习目标: 了解并掌握循环程序的构造方法,尤其是对循环控制条件的设置以及可能出现的边界情况的考虑。掌握起泡排序算法这种多重循环程序设计中的常用方法。交换标志位的设置在此算法中更能提高效率。学会在数组排序算法中采用折半查找法来提高查找效率。学会使用跳跃表法实现CASE结构。
4.1 汇编语言程序格式 4.2 MASM中的表达式 4.3 伪指令语句 4.4 DOS系统功能调用和BIOS中断调用
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月19日.
第五章:输入输出基本技术 主讲教师:范新民.
第二章 8086微处理器. 第二章 8086微处理器 微处理器的基本结构 8086微处理器的主要特性和内部结构 8086CPU的工作模式和引脚信号 8086的存储器管理 8086的总线操作和时序.
微机原理及接口技术 主讲人 钱晓捷.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程.
习题3 1、 分别说明下列指令的原操作数和目的操作数各采用什么寻址方式。 设定如下: ①立即寻址 ② ① ②寄存器寻址
第 3 章、組合語言 作者:陳鍾誠 旗標出版社.
第九章 BIOS和DOS中断 在存储器系统中,从地址0FE000H开始的8K ROM(只读存储器)中装有BIOS(Basic Iuput /output System)例行程序。驻留在ROM中的BIOS给PC系列的不同微处理器提供了兼容的系统加电自检,引导装入,主要I/O设备的处理程序以及接口控制等功能模块来处理所有的系统中断。使用BIOS功能调用,给程序员编程带来很大方便,程序员不必了解硬件操作的具体细节,直接用指令设置参数,然后中断调用BIOS中的子功能,所以利用BIOS功能编写的程序简洁,可读性好,
第2章 80x86计算机组织  计算机系统  存储器  中央处理机  外部设备.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
《微型计算机原理与接口技术》 第4版 王良 宁德师范学院 吴宁 乔亚男 编著 清华大学出版社 出版
第5章 循环与分支程序设计  循环程序设计  分支程序设计.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年12月17日.
本节内容 段描述符与段选择子 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
第八章 中断系统.
微机原理与接口技术 西安邮电大学计算机学院 宁晓菊.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月06日.
第6章 子程序结构 在程序设计中,我们会发现一些多次无规律重复的程序段或语句序列。解决此类问题一个行之有效的方法就是将它们设计成可供反复调用的独立的子程序结构,以便在需要时调用。在汇编语言中,子程序又称过程。 调用子程序的程序称为主调程序或主程序。 2019/7/20 ch6.
微机原理与接口技术 第5章 汇编语言程序设计 西安邮电大学计算机学院 王 钰.
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第8章 并行接口芯片 并行接口一般具有两个或两个以上的8位I/O接口。各个口的工作方式可由程序分别确定或改变,使用灵活,便于和各种外部设备连接。因此,又称可编程的外部接口(PPI) 目前各主要微处理器厂商都有自己的PPI产品,但它们的功能基本类似.
第4章 汇编语言程序格式  汇编程序功能  伪操作  汇编语言程序格式  汇编语言程序的上机过程
第三章 8086的指令系统 8086指令特点 8086的寻址方式 8086的指令格式及数据类型 8086的指令集.
Presentation transcript:

微机原理与接口技术 微机原理与接口技术 朱华贵 2015年10月30日

微机原理与接口技术 实验一 汇编语言程序设计 朱华贵 2015年10月30日

汇编语言程序的上机过程 1. 上机环境 要运行调试汇编语言程序,至少需要以下程序文件: 编辑程序:EDIT.COM或其他文本编辑工具软件,用于编辑源程序。 汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。 连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。 调试程序:DEBUG.EXE,用于调试可执行程序。

2. 上机过程 汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。 1.编辑源程序 用文本编辑软件创建、编辑汇编源程序。常用编辑工具有:EDIT.COM、记事本、Word等。 无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。

2. 上机过程(续) 2.汇编 用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。 汇编程序的主要功能是:检查源程序的语法,给出错误信息;产生目标程序文件;展开宏指令。

2. 上机过程(续) 汇编过程如下: 在DOS状态下,输入命令:MASM MYFILE.ASM(回车),即启动了汇编程序。 此命令执行后,会出现下面的3行信息,依次按回车键(即选择默认值)即可建立3个输出文件,其扩展名分别为:.OBJ(目标文件),.LST(列表文件)和.CRF(交叉引用文件)。 Object Filename [MYFILE.OBJ]: Source Listing [Nul.LST]: Cross Reference [Nul.CRF]:

2. 上机过程(续) 如果汇编过程中发现有语法错误,则屏幕上会显示出错语言的位置和出错的类型。此时,需要进行修改,然后再进行汇编。 如此进行,直至汇编无错误,得到目标文件为止。

2. 上机过程(续) 3.连接 汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。连接过程如下: 在DOS状态下,输入命令:LINK MYFILE.OBJ(回车),即可完成连接。 与汇编过程类似,如果连接过程中出错,那么程序会在屏幕上显示提示信息。此时,需要对源程序进行查错、修改,然后再进行汇编、连接,直至连接无错误,得到可执行文件为止。

2. 上机过程(续) 4.程序运行 在DOS提示符下输入可执行程序的文件名即可运行程序。若程序能够运行但不能得到预期结果,则就需要检查源程序,改错后再汇编、连接、运行。 5.程序调试 在程序运行阶段,有时不容易发现问题,尤其是碰到复杂的程序更是如此,这时就需要使用调试工具进行动态查错。常用的动态调试工具为DEBUG。

3. 运行调试 DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段,它可以直接调试COM文件和EXE文件。 DEBUG状态下的所有数据都采用十六进制形式显示,无后缀H。

3. 运行调试(续) 1.DEBUG的运行 在DOS状态下,输入下列命令之一,就可以进入DEBUG调试状态。 进入DEBUG调试状态后,将显示提示符“-”,此时,可输入所需的DEBUG命令。

3. 运行调试-DEBUG的主要命令 (1)显示内存单元内容的命令D 格式为:-D [地址] 或 -D [范围] 例如,显示指定范围(DS:100~DS:1FF)内存单元内容的命令是: -D 100 1FF 这里没有指定段地址,D命令自动显示DS段的内容。

3. 运行调试-DEBUG的主要命令 (2)修改内存单元内容的命令E 格式一:用给定内容代替指定范围的单元内容 -E 地址 内容表 例如,-E DS:100 F3 58 59 5A 8D 格式二:逐个单元相继地修改 -E 地址 例如: -E DS:100↙ 18E4:0100 89.78 ↙ 此命令是将0100单元内容89改为78。 78是程序员从键盘输入的。 程序员在修改完一个单元后,可按空格键继续修改下一单元内容,直至按回车键结束该命令。

3. 运行调试-DEBUG的主要命令 (3)检查和修改寄存器内容的命令R 格式一:显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态 格式二:显示和修改某个指定寄存器内容 -R寄存器名 例如:-R AX 格式三:显示和修改标志寄存器内容 -RF

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

3. 运行调试-DEBUG的主要命令 (5)跟踪命令T 格式一:逐条指令跟踪 -T[=地址] 该命令从指定地址起执行一条指令后停下来,显示所有寄存器及标志位的内容。若未指定地址,则从当前的CS:IP开始执行。 格式二:多条指令跟踪 -T[=地址][值] 该命令从指定地址起执行n条指令后停下来,n由[值]确定。

3. 运行调试-DEBUG的主要命令 (6)汇编命令A 格式为:-A [地址] 该命令允许输入汇编语言语句,并能把它们汇编成机器代码,相继地存放在从指定地址开始的存储区中。必须注意:输入的数字均默认为十六进制数。

3. 运行调试-DEBUG的主要命令 (7)反汇编命令U 格式一:从指定地址开始,反汇编32字节 -U [地址] 格式二:对指定范围内的存储单元进行反汇编 -U [范围]

3. 运行调试-DEBUG的主要命令 (8)执行命令P 格式为:-P [=地址] [指令数] 该命令控制CPU执行指定地址处的指令。若指定了指令数,则CPU执行从指定地址开始的若干条指令。若未指定地址和指令数,则CPU执行由(CS:IP)指定地址处的一条指令。 P命令与T命令的差别在于P命令把子程序调用(CALL)、重复字符串指令(REP)或软件中断(INT)当成一条指令来执行,简化了跟踪过程。

3. 运行调试-DEBUG的主要命令 (9)退出DEBUG命令Q 格式为:-Q 该命令退出DEBUG程序,返回DOS。

3. 运行调试-DEBUG使用说明 ① 在DEBUG中的提示符“-”下才能输入命令,在按回车键后,该命令才开始执行。 ② 命令是单个字母,命令和参数的大小写可混合输入。 ③ 命令和参数、参数和参数之间要用空格、逗号或制表符等分隔。 ④ 可以用“段值:偏移量”的形式来表示地址,也可以用段寄存器来代表“段值”。例如,1000:0,DS:10,CS:30等。

3. 运行调试-DEBUG使用说明(续) ⑤ 范围:用来表示地址范围,从哪个地址开始,到哪个地址结束。它有两种表示方式。 地址 地址——前者表示起始地址,要用“段值:偏移量”来表达,后者表示终止地址,只用“偏移量”来表示。 地址 长度——前者表示起始地址,要用“段值:偏移量”来表达,后者表示该区域的大小,用字母“L”开头的数值来表示。 例如: 100:50 100 100:50 L100

3. 运行调试-DEBUG使用说明(续) ⑥ 当命令出现语法错误时,将在出错位置显示"^ Error"。 ⑦ 可用组合键Ctrl+C或Ctrl+Break来终止当前命令的执行,还可用组合键Ctrl+S来暂停屏幕显示(当连续不断地显示信息时)。

实验准备: 用DEBUG验证程序段 通常汇编教学中,汇编程序结构会在指令系统后面讲,学生在学习指令系统时由于没有讲汇编程序结构而无法编写汇编程序来加深对汇编指令的理解,因此,在这里我们通过2个例子,介绍使用DEBUG调试工具编写程序段来学习汇编指令。 有关DEBUG的常用命令的用法请参看相关资料和课件。

题目:非压缩BCD码的减法运算,做68-9 mov ax, 0608h mov bl, 09h sub al, bl aas 运行debug

首先用A命令输入程序 Debug中只使用16进制数,且无需加H后缀 直接用回车退出汇编编辑状态

使用T命令跟踪执行 第一个T命令要带上程序首地址 后面的T命令无需地址 标志位 这是还未执行的下一条指令的地址和指令码 这是还未执行的下一条指令的反汇编 当前指令执行后的各寄存器的结果

调试完后用Q命令退出DEBUG。 标志 为1时 为0时 溢出OF 方向DF 中断IF 符号SF 零位ZF 辅助AF 奇偶PF 进位CF OV DN EI NG ZR AC PE CY NV UP DI PL NZ NA PO NC

再举一个有访存操作的例子 MOV SI, 0050H ; (DS)=2000H MOV DI, 0100H ; (ES)=3000H MOV CX, 5 CLD REP MOVSB 1)先用A命令输入程序

2)用R命令修改DS和ES寄存器到约定值 DS的原始值 输入的修改值 3)用D命令查看源数据区和目标数据区

4)用E命令初始化源数据区后再用D命令检查源数据区和目的数据区

5)单步跟踪执行程序

6)执行后检查源数据区和目标数据区

注意,用A命令输入指令时,如果输入错误debug会立即指出错误和位置。地址不会变化,以便用户修正指令。

附2: 汇编语言上机过程

用DEBUG调试程序: 1)用U命令查看程序和目标码及指令地址 段值 偏移 指令码 反汇编的源码

2)用T命令单步跟踪,逐条执行看中间结果,DEBUG将显示每个寄存器以及各标志位的当前值 这是还未执行的下一条指令 这是MOV BX,[SI]的执行结果 标志位

3)对于系统功能调用,可以用G命令设置断点执行,也可以用P命令跳过过程与系统功能服务程序。 设断点执行,断点设在INT 21H的后一句 INT 21H输出的一个字符

实验1 汇编语言程序的调试与运行 一.实验目的 1.学习数据传送和算术运算指令的用法 2.熟悉在PC机上编辑、汇编、连接、调试和运行汇编语言程序的过程。 二.实验内容 编程实现 SUM=a1b1+ a2b2 …… + a10b10。

三、参考程序 ;内存数据定义 DATA SEGMENT ORG 1000H;为调试方便将数据存于指定地址处, a db 89, 5, 56, 80 …… ; 10个数据 ORG 2000H;便于查看和设置 b db 18, 29, 12, 38 …… ; 10个数据 ORG 3000H; SUM dw ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX

MOV DX,0 MOV SI,0 MOV CX,10 LOP1:MOV AL, a[SI] MUL b[SI] ADD DX,AX INC SI LOOP LOP1 ;☆ MOV SUM,DX MOV AH,4CH INT 21H CODE ENDS END START

四、调试步骤 1.编辑源程序,建立一个以后缀为 .ASM的文件. 2.汇编源程序,检查程序有否错误,有错时回到编辑状态,修改程序中错误行。无错时继续第3步。 3.连接目标程序,产生可执行程序。 4.DEBUG调试可执行程序,利用T命令进行操作并记录程序每次执行到☆处,CX、SI、AX及数据段DS:3000H~DS:3001H的内容。

4.DEBUG调试结果分析: 序号 CX SI AX DS:3000H~DS:3001H 1 2 3 4 5 6 7 8 9 10

五、思考题 编写程序将定义的一组字符串中的小写字母全部转换成大写字母(其余字符不变) 例如下面BUFFER中定义的一组字符串。 DATA SEGMENT BUFFER DB 'hello ASM! 20151030' STRLEN EQU $-BUFFER OUTSTR DB STRLEN DUP(?) DATA ENDS