河南理工大学接口技术ppT汇总_第1页
河南理工大学接口技术ppT汇总_第2页
河南理工大学接口技术ppT汇总_第3页
河南理工大学接口技术ppT汇总_第4页
河南理工大学接口技术ppT汇总_第5页
已阅读5页,还剩357页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

讲授:李泉溪

《接口技术》接口技术学什么?软件方面硬件方面怎么连结?接口技术3计算机概述●二进制●数与码●ASCII码与奇偶校验●Inter公司历代微处理器典型产品Inter公司历代微处理器典型产品第2章微处理器结构图1微型计算机结构图9第2章微处理器结构102.116位微处理器80862.1.18086的编程结构总线接口部件区

执行部件区

标志内容算数逻辑带来流水线机制注:微处理器8088,与8086是姐妹产品,其特点是:

1.外部总线少8根数据线;2.指令队列少两个缓冲器注:将来实验用的是8088.11EU控制器ALU暂存器标志寄存器8位队列总线总线控制逻辑内部总线16位地址加法器20位地址总线16位数据总线执行部件EU总线接口部件BIU123456指令队列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暂存器8086总线主存专用寄存器12

标志寄存器F唯一能按位操作的寄存器只定义了其中9位,另外7位未定义(不用)6位状态标志:OF、SF、ZF、

PF、CF、AF3位控制标志:DF、IF、TFOFDFIFTFSFZFAFPFCFD15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0进位标志奇偶标志辅助进位标志零标志符号标志单步跟踪标志中断允许标志方向标志益处标志︻补码运算用︼9.2013状态标志反映指令对数据作用之后,结果的状态(不是结果本身)。这些状态将控制后续指令的执行OF(OverflowFlag):溢出标志(指补码),F.11OF=1:在运算过程中,如操作数超过了机器表示的范围称为溢出。OF=0:在运算过程中,如操作数未超过了机器能表示的范围称为不溢出。字节允许范围:-128—+127字允许范围:-32768—+3276714状态标志CF(CarryFlag):进位/借位标志,F.0CF=1:最高位需要向前产生进位/借位。CF=0:最高位不会向前产生进位/借位。AF(AuxiliaryCarryFlag):辅助进位标志,F.4AF=1:数据的第3位(半个字节)需要向前产生进位/借位。AF=0:数据的第3位(半个字节)不会向前产生进位/借位。15状态标志SF(SignFlag):符号标志,F.7SF=1:运算结果的最高位为1,如果为带符号数,则为负数。SF=0:运算结果的最高位为0,如果为带符号数,则为正数。带符号数的最高位为符号位;而无符号数的最高位为数值位。ZF(ZeroFlag):全零标志,F.6ZF=1:运算结果为全0。不包括进位的情况ZF=0:运算结果不为0。16状态标志PF(ParityFlag):奇偶标志F.2PF=1:结果的低8位中有偶数个1。PF=0:结果的低8位中有奇数个1。有些运算操作将影响全部状态标志,如加法、减法运算有些操作影响部分状态标志,如移位操作有些指令的操作不影响任何状态标志,如数据传送指令(远程传送例外)17例:计算机执行两个数的加法

0010

0011

0100

0101

+

0011

0010

0001

10010101

0101

0101

1110分析:1.运算结果的最高位是0,所以符号标志SF=0

2.运算结果本身不为0,所以零标志ZF=0

3.运算结果低8位1的个数为奇数,奇偶标志PF=0

4.运算最高位没有产生进位,所以进位标志CF=0

5.第3位没有往第4位进位,所以辅助进位标志AF=0

6.运算结果没有超出有效范围,所以溢出标志OF=0

18控制标志DFIFTF控制标志位的值不由数据运算的结果决定,而由指令直接赋值控制标志决定后续指令的执行情况DF(DirectionFlag):方向控制标志位,F.10用于串处理指令,控制从前往后、还是从后往前对字符串进行操作处理DF=1,每次串处理操作后使变址寄存器SI和DI的值递减,使串处理从高地址向低地址方向处理。DF=0,每次串处理操作后使变址寄存器SI和DI的值递增,使串处理从低地址向高地址方向处理。19控制标志DFIFTFIF(InteruptFlag):中断允许/禁止标志位F.9IF=1,允许外部可屏蔽中断。CPU可以响应可屏蔽中断请求。IF=0,关闭中断。CPU禁止响应可屏蔽中断请求。IF的状态对不可屏蔽中断和内部软中断没有影响。TF(TrapFlag):跟踪(陷阱)标志位F.8TF=1,每执行一条指令后,自动产生一次内部中断,使CPU处于单步执行指令工作方式,便于进行程序调试,用户能检查程序。TF=0,CPU正常工作,不产生陷阱。20控制标志与状态标志的区别控制标志的值:由系统程序或用户程序根据需要用指令设置。状态信息:由中央处理器执行运算指令,并根据运算结果而自动设置。X86CPU也提供了直接设置状态标志之值的指令21AXBXCXDX8086的通用寄存器目的变址指针(DestinationIndex)DI源变址指针(SourceIndex)SI基址指针(BasePointer)BP堆栈指针(StackPointer)SP数据寄存器(Data)DLDHDX计数寄存器(Count)CLCHCX基址寄存器(Base)BLBHBX累加器(Accumulator)ALAHAX数据寄存器可分为两个8位,主要用于数据操作地址指针主要用于地址操作16位8822通用寄存器的特殊用法(默认用法)寄存器特殊用法AX,AL乘法/除法指令,作累加器;I/O操作时,作数据寄存器AH在LAHF指令中用作目的寄存器((AH)←标志)AL在BCD码及ASCII码运算指令中作为累加器;在XLAT指令中作为累加器(AL)←((AL)+(BX))BX在间接寻址中作为基址寄存器和变址寄存器CX在循环程序中,作循环次数计数器CL在移位和循环移位指令中,作为移位位数和循环移位次数的计数寄存器(指令执行后,(CL)不变)DXI/O指令间接寻址时,作为地址寄存器;在乘法指令中作为辅助累加器(当乘积或被除数为32位时,存放高16位数)BP在间接寻址中,作为基址寄存器SP在堆栈操作中,作为堆栈指针SI间接寻址时,作为地址寄存器或变址寄存器;在串操作指令中作为源变址寄存器DI在间接寻址时,作为地址寄存器或变址寄存器;在串操作指令中作为目的变址寄存器23EU控制器ALU暂存器标志寄存器8位队列总线总线控制逻辑内部总线16位地址加法器20位地址总线16位数据总线执行部件EU总线接口部件BIU123456指令队列通用寄存器AXAHALBXBHBLCXCHCLDXDHDLSPBPDISICSDSSSES80888086IP暂存器8086总线讨论:1.以算术逻辑单元ALU为中心

2.以主存为中心主存24标志寄存器标志寄存器(FlagRegister)共有16位,其中7位未用。标志寄存器内容如图2-2所示:(1)条件类标志:CFZFSFPFOFAF(2)控制类标志:DFIFTF条件标志分别为:进位CF、零ZF、符号SF、奇偶PF、溢出OF、辅助进位AF(半进位)控制标志意思如下:DF:方向标志,为0则串操作时地址增值IF:中断标志,为0则中断屏蔽TF:单步标志,为0则连续执行程序25ORG10100H;伪指令:CS=1000h;IP=0100HMOVAX,0064H;数据传送指令机器码:B86400ADDAX,0100H;加法指令机器码机器码:050001MOV[2000],AX;数据传送指令机器码:A30020

;DS=1492H由操作系统安置;IP=2000H由指令安置注:CS—代码段寄存器

DS—数据段寄存器注:物理地址需要合成产生

IP—指令指针寄存器微处理器8088执行汇编语言程序过程演示268088的指令执行过程段地址寄存器278086总线周期的概念CPU主存************程序时钟外部存储器硬盘接口DMA启动程序288086总线周期的概念总线周期:4个时钟周期组成,4个时钟周期分别叫做:

T1状态、T2状态、T3状态、T4状态

问:你的电脑时钟周期是多少?T1状态:CPU通过复用总线往存储单元发地址T2状态:CPU撤销地址信号T3状态:CPU启动复用总线数据传输T4状态:总线周期结束Tw状态:存储器或I/O口未准备好,要等待(要作解释)TI状态:空闲周期,即非总线传输的指令,如指令队列满了。返回27291.8086CPU的引脚信号2.最小工作模式3.最大工作模式2.1.28086的引脚信号

和工作模式30图2.48086/8088的引脚信号(括号中为最大模式时的引脚名)(a)8086的引脚信号;(b)8088的引脚信号8086/8088CPU引脚返回5731

看图要点1、40个管脚分3类2、很多管脚有多个功能32数据线(D0~D15)地址线(A0~A19)MN/MX最小/最大模式转换BHE数据高8位允许信号ALE地址锁存信号DEN使能信号[数据传输允许】DT/R数据传输方向控制M/IO内存/外设控制READY准备好信号,控制Tw插入数RESET复位信号HOLD、HLDA总线控制INTR、INTA中断控制NMI非屏蔽中断331、8086的最小模式MN/MX最小/最大模式转换BHE数据高8位允许信号ALE地址锁存信号DEN使能信号[数据传输允许】DT/R数据传输方向控制M/IO内存/外设控制READY准备好信号,控制Tw插入数。RESET复位信号HOLD、HLDA总线控制INTR、INTA中断控制NMI非屏蔽中断34地址信号的分离选通端,接ALE输出允许端A0~A15AD0~AD153片8282的连法35数据信号的分离请看计算机读写数据的时序分析方向控制端输出允许端AD0~AD7D0~D736CPU时钟信号的获得复位端准备好信号端EFI:外振源输入端,无晶振时用372、8086的最大模式38最大模式下控制信号的产生2009-2-2639最大模式与最小模式比较共同点:1、时钟及其产生电路是一样的。

2、数据总线、地址总线的处理和连法是一样的。不同点:1、控制信号的产生机理不一样,控制信号的类型有所不同。

2、最小模式用一个CPU,最大模式用两个CPU。一个专门做辅助计算。

402.1.38086的操作和时序

操作:

计算机在运行过程中,需要CPU执行许多操作。8086的主要操作分为以下5种类型:①系统的启动和复位操作;[后面专门讲]②暂停操作;由暂停指令HLT(p134)产生,等待外中断用③总线操作;

[总线读写操作时序图]④中断操作;[后面专门讲]⑤总线控制(请求/允许,多主系统时)。418086的复位操作时序返回系统的复位42计算机复位时“强制”状态计算机起步点:FFFF0,这是计算机最靠前的程序——主板BIOS(底层代码)的第一条指令所在地址。43CPU从存储器或I/O端口读取数据的时序

MOVAL,[2000H];从存储器2000H读取数据INAL,20H;从I/O端口20H读取数据返回数据收发控制返回到41448086写周期的时序返回到2.1.3MOV[2000H],AL;往存储器2000H写数据OUT20H,AL;往I/O端口20H写数据45中断技术概念46中断操作和中断系统主程序中断0中断1中断2中断254中断255断点中断号0中断号255指令:INTn中断表返回到4147中断向量表名词:中断号—

类型吗中断服务程序首地址

——

中断向量中断表—

中断向量表48中断号的索取方式指令索取INTn,n为中断号CPU指定如非屏蔽外中断的类型码为n=2.外设通过总线将中断号n送入CPU498086/8088的中断号配置注:0、1、2、3、4上述五个类型吗为系统专用号,别人不得使用!2号指定一个范围指定一个范围0号1号4号3号50

256个中断向量在中断向量表中的位置计算第n个中断向量所在位置的段地址:

0000H第n个中断向量所在位置的偏移地址:中断号×451256个中断号的分配安排

中断向量表位于主存的第0段,占0-3FFH区域,共1KB存储空间。52

256个中断向量在中断向量表中的存放规则偏移地址在前段地址在后例如:将某向量

4030:2010存入表的0号位置:0000:0000100000:0001200000:0002300000:00034053

256个中断向量在中断向量表中的存放规则例如:将某向量

4030:2010存入表的40H号位置:0000:0100100000:0101200000:0102300000:01034054中断向量和中断向量表的计算

已知中断类型号,找对应的中断子程序位置:

假定类型号为20H,其所对应的中断向量存放的位置:0000:0080H开始的4个单元中,如果0080H、0081H、0082H、0083H这4个单元中的值分别为10H20H30H40H,那么,在这个系统中,20H号中断所对应的中断向量为4030:2010。即对应的中断子程序首地址为:4030:2010。

中断类型号17H对应的中断向量存放起点为0000:005CH,所以,0段005CH、005DH、005EH、005FH这4个单元中的值应当分别为90H、78H、45H、23H。(注:地址低位在前)

已知中断向量为2345:7890,将其放在类型号17H处的向量中:55

中断号的索取方式

(计算机进入中断程序的原因)CPU执行指令时产生异常前面讲的益处中断、除数为0中断都是。环境产生异常前面讲的可屏蔽中断和非屏蔽中断都是。3.程序执行中断调用指令INTn568086/8088对中断响应过程的流程图

注:TF为单步标志,也叫跟踪标志;IF为中断允许标志

TEMP为暂存单元非屏蔽请求可屏蔽请求保护断点57

中断子程序的调用附录二常用DOS功能调用(INT21H)P307附录三常用ROM--BIOS功能调用(P312)(INT10H、INT11H……INT1AH)

一个中断功能号可以挂很多个不同的子功能号(装入AH里),最多可以挂多少?58到此,中断技术讲述结束.下面讲地址总线的管理.592.1.48086的存储器编址和I/O编址00000FFFFF6FFFF60000I/O口使用统一编址00000FFFFF0000FFFFI/O口使用独立编址M/~IO内存/外设控制两种编址方案

602.1.48086的存储器编址和I/O编址

(1)编址方式统一编址:内存和I/O口统一占用20根地址线其物理地址范围:000000H~FFFFFH

存储空间为:1MB独立编址:内存占用20根地址线,其物理地址范围:000000H~FFFFFH

I/O口占用前16根地址线其物理地址范围:0000H~FFFFH

存储空间为:64KB注意:1MB贮存是分段管理的,

64KB口地址不分段。61计算机存储器几个典型区域的说明(1)00000~003FFH共1KB区域用来存放中断向量,这一区域称为中断向量表。此表共可装256个中断向量。对一个具体系统来说,一般并不需要多达256个中断类型,因此,实际系统中的中断向量表的大部分区域是空白的。(2)B0000H~B0F9FH约4KB是单色显示器的显示缓冲区,存放单色显示器当前屏幕显示字符所对应的ASCII码和属性。(3)B8000H~BF3FH约16KB是彩色显示器的显示缓冲区,存放彩色显示器当前屏幕像素所对应的代码。(4)从FFFF0H开始到存储器底部FFFFFH共16个字节,一般用来存放一条无条件转移指令,转到系统的初始化程序处。系统在加电或者复位时,会自动转到FFFF0H处开始程序运行。

注意1:系统BIOS代码的起始地址即为FFFF0H。注意2:①②③都是操作系统给与的安排。

6200000FFFFF中断向量表所在区域系统代码启动点彩色显示器的显示缓冲区单色显示器的显示缓冲区63

8086的I/O编址研究I/O端口地址用了8086地址总线的低16位:A0~A15.

解决地址重叠问题的办法:硬件采取:利用CPU的第28管脚软件采取:MOV/OUTIN指令

8086系统和外部设备之间都是通过I/O芯片来联系的。每个I/O芯片都有一个端口或者几个端口,一个端口往往对应了芯片内部的一个寄存器或者一组寄存器。微型机系统要为每个端口分配一个地址,此地址叫端口号。当然,各个端口号不能重复。

8086允许有65536个8位的I/O端口,两个编号相邻的8位端口可以组合成一个16位端口。指令系统中既有访问8位端口的输入输出指令,也有访问16位端口的输入输出指令。INAL,200H;从外设端口(地址200H)输入8位信号

INAX,200H;从外设端口(地址200H)输入16位信号

OUT300H,AL;输出(端口地址300H)64下面简单介绍32位微型计算机系统

新技术:1、虚拟存储技术2、片内存储管理技术3、存储体管理分段分页保护技术。段的新概念:段基地址:32位段偏移量:32位662.232位微处理器803861985年10月,Inter公司推出了32位微处理器80386。80386特点:1.32位数据总线。

2.32位地址总线,直接寻址能力:4GB

3.时钟频率16MHz(8086为8MHz)

新技术:虚拟存储技术,片内存储管理技术,存储体管理分段分页保护技术。67虚拟存储技术段的新概念:段基地址:32位段偏移量:32位最小段:1B

最大段:4GB

允许最多段数:14k个总存储空间(最大):14k×4GB=64T

注意:大多数空间是虚拟的6880386的寄存器

说明1、EIP32位指针寄存器

IP16位指针寄存器可以与8086兼容2、EFLAGS32位标志寄存器3、GDTR全局描述符表寄存器。(指出全局描述符表位置)4、IDTR中断描述符表寄存器

。(指出中断描述符表位置)5、LDTR局部描述符表寄存器。(指出局部描述符表位置)

6、CR0~CR3控制寄存器,保存各种全局性状态。

7、DR0~DR7调试寄存器

8、TR6TR7测试寄存器6980386的标志寄存器状态标志:CF,PF,AF,ZF,SF,OF,NT控制标志:DF,IF,IOPL系统方式标志:VM,RF说明:IOPL在保护方式下,用来限制I/O指令的使用特权级。

VM=1时,即进入虚拟8086方式。

RF用于调试失败后,强迫程序恢复执行。

8086的标志寄存器

7032位机的寻址方式发生了革命性的变化●引入了虚拟空间、虚拟地址的新概念●发展了段的概念,引进了段描述符表技术71从逻辑地址到线性地址的转换72从逻辑地址到物理地址的转换此偏移量为线性地址的低12位,高20位通过复杂换算产生页表32位页基地址73从段选择子到段基址

段选择子段描述符逻辑地址物理地址

RPL:定义此段使用的特权级别0-1-2-3共可装入16K个段描述符段描述符(看下页)TI=0为全局描述符表GDT表LDT表74存在P=0,则说明此段不在主存内,应从硬盘调入,这就是“访问段异常”75保护方式下段地址的产生

1、描述符表(段描述符表)包含大量描述符,指出段的属性(位置、大小、类型[代码段?堆栈段?数据段?])和保护特性。2、段描述符表共用三个。一个全局段描述符表,一个局部段描述符表,

一个中断描述符表。

7680386的段描述符寄存器说明:20位段界限值,定义了该段的长度,计算单位有“粒度”定义,字节或页(粒度=1则为页,1页=4KB)“存在”=1,说明此段已装入主存;=0,说明还在磁盘中。从而完成实地址和虚地址的变换统一:执行此段时发现为虚则立即从磁盘调入内存!与段描述符表中的每一项的结构完全一样。从描述符表中取出的一项放入相应的寄存器中77从逻辑地址到物理地址的转换此偏移量为线性地址的低12位,高20位通过复杂换算产生页表32位页基地址7880386的信号第3章

8086汇编语言指令系统

《微机原理与接口技术》80

本章主要内容8086指令的格式常用汇编语言指令介绍汇编语言编程的格式(补)818086指令的格式

操作码操作数…….操作数操作码字段指示计算机要干什么?操作数字段指出在指令执行操作的过程中所需要数据的来源。举例:三条指令:MOVAX,0064H;数据传送指令机器码:B86400ADDAX,0100H;加法指令机器码机器码:050001MOV[2000],AX;数据传送指令机器码:A30020指令一般格式操作数字段的三种形式:

1、操作数本身(立即寻址方式)

2、操作数地址(直接寻址方式)

3、指向操作数地址的指针(间接寻址方式)3.18086的寻址方式一、数据寻址方式(二、程序寻址方式)

1、立即寻址方式例:MOVAL,08H2、寄存器寻址方式例:MOVAX,BX3、直接寻址方式例:MOVAX,[2000H];段地址在DS中,指令不用写

4、寄存器间接寻址例:MOVAX,[BX]

如已知(DS)=2000H,(BX)=1000H,(21000H)=3050H

问:此指令执行后,(AX)=?

二、程序寻址方式1、段内直接转移

JMPNEARPTRPROGIA

;无条件转,16位跳转范围

JMPSHORTQUEST

;无条件转,08位跳转范围;PROGIA,QUEST

为符号地址

2、段间直接寻址方式

JMPFARPTRNEXT

;NEXT

为符号地址

3.28086的指令系统常用汇编指令:1、MOVAX,1234H立即寻址方式指令2、MOVAX,[1234H]直接寻址方式指令3、MOVAX,BX寄存器寻址方式4、MOVAX,[BX]寄存器间接寻址方式5、MOVAX,[BX][DI]基址变址寻址方式6、INAX,28HI/O口传送指令—设备信号读入7、OUT5,ALI/O口传送指令—写入设备,如遇大地址用DX8、JMPOPR无条件转移到OPR9、JCOPR有进位转移到OPR10、JZOPR结果为零转移到OPR11、JNZOPR结果非零转移到OPR12、MOVBX,OFFSETLIST地址传送指令13、ADDAX,BX不带进位加14、ADCAX,BX带进位加15、INCAX;加1指令16、DECCX;减1指令17、INTN调用指令,N为中断号18、IRET中断服务返回指令85

I/O口传送指令:外设输入指令:

例1:INAX,28H;从端口28H输入一字例2:MOVDX,3FCHINAX,DX;对16位地址必须借助;DX寄存器寻址

向外设输出指令:

例1:OUT5,AL;向端口5输出一字节例2:MOVDX,500HOUTDX,AL;对16位地址必须借助

;DX寄存器寻址注意:I/O大地址必须用DX寄存器寻址方式条件转移指令的应用编程举例:MOVCX,30MOVBX,0AGAIN:

INCBXDECCXJNZAGAINMOVAX,BX循环指令:LOOP

MOVCX,30

MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX简单学习附录1:8086指令系统一览表87常用伪指令:1、等值伪指令:EQUmmequ56;定义后,mm就等于56

2、定义数据的伪指令:DB,DW

它们分别定义:1个字节、2个字节

ABCDB39,250,?,0,?;定义字节单元

DEFDW983,2358,?,?;定义字单元(像数组)3、地址计数器:$

arraydb32,43,56,8,65countequ$-array4、段定义伪指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS88汇编语言程序的格式数据段名SEGMENT

;SEGMENT

段定义伪指令,与ENDS构成一对使用数据空间预置数据段名ENDS堆栈段名

SEGMENT

堆栈空间预置堆栈段名ENDS代码段名SEGMENTASSUME

段地址说明START:

段地址装填(除代码段CS外,其它段均要装填。CS段是系统在加载程序后自动装填的,即由操作系统的任务管理程序自动完成装填的,此项装填不需要用户管理。)主程序体

..代码段名ENDS;代码段结束

ENDSTART;全部程序结束89datasegment;数据段

arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆栈段

stakdb10dup(?)stackendscodesegment;代码段

assumecs:code;段地址说明

ds:datass:stack;前面全是伪指令

start:movax,data;段地址装填

movds,axmovax,stackmovss,ax;;;;代码段不用装填!!

movdi,offsetsum;有效地址

movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;带进位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:编一个程序,其功能是对5个数据求和,并将结果放入SUM单元。14、

ABCDB39,250,?,0,?

定义数据的伪指令15、SEGMENT……ENDS

段定义伪指令91常用汇编语言指令介绍一、数据寻址方式类指令(只讲以后用到的主要指令)

2.

寄存器寻址方式

例3.4(a)MOVAX,BX;16位例3.4(b)MOVECX,EDX

;32位,80386机及以后才有

1.

立即寻址方式

例3.1MOVAL,8;(AL)=08H,08H是立即数例3.2MOVAX,1234H;(AX)=1234H例3.3MOVEAX,12345678H;(EAX)=12345678H.

注意:立即数长度应予目的操作数长度一致。923.

直接寻址方式

例3.5MOVAX,[2000H];注意2000H是偏移地址,也称有效地址如(DS)=3000H,(32000H)=3050H,执行结果为:(AX)=3050H。说明:该指令的有效地址为2000H,操作数的物理地址=数据段基地址*16+有效地址(2000H)注意:不要与立即寻址方式相混淆。(害怕混淆所以用了[])934.基址变址寻址方式

例:MOVAX,[BX][DI](或写为:MOVAX,[BX+DI])对于32位寻址方式可有:

MOVEDX,[EBX][EDI]

这种寻址方式适用于数组(一维、二维)或表格处理,其首地址可存放在基址寄存器中,而通过修改变址寄存器的内容来访问数组中的各个元素。一、数据寻址方式类指令[上面所讲]二、程序寻址方式类指令[程序跳转]1、段内无条件转移指令:

JMPNEARPTRPP;近转移(16/32)PP为符号地址

;NEARPTR

为操作符。;对8086转移16位,对386及以后机型转移32位

2、段间无条件远转移指令:

JMPWORDOTROPR

;OPR为符号地址●后面还要介绍有条件跳转94

其他类型汇编语言指令补充1、PUSHAX;进栈指令2、POPAX;出栈指令3、PUSHF;标志寄存器内容进栈4、POPF;标志寄存器内容出栈

I/O口传送指令:5、外设输入指令:例1:INAX,28H;从端口28H输入一字例2:MOVDX,3FCHINAX,DX;对16位地址必须借助;DX寄存器寻址6、向外设输出指令:例1:OUT5,AL;向端口5输出一字节例2:MOVDX,500HOUTDX,AL;对16位地址必须借助

;DX寄存器寻址注意:I/O大地址必须用DX寄存器寻址方式4957、地址传送指令:LEALEABX,LIST;将符号地址LIST的有效地址送BXMOVBX,OFFSETLIST;同上,又一种写法,建立中断向量;时要用到。;表示某段子程序LIST:***************

8、加减指令

ADDAX,CX;不带进位加AX(AX)-(CX)

ADCDX,BX;带进位加

SUBAX,BX;减法指令AX(AX)-(BX)

INCAX;加1DECCX;减1注意:MOVBX,LIST([LIST])什么意思?969、逻辑运算指令(1)AND逻辑与指令格式:ANDDST,SRC

执行的操作:(DST)←(DST)∧(SRC)

(2)TEST测试指令格式:TESTOPR1,OPR2

执行的操作:(OPR1)∧(OPR2),两个操作数相与的结果不保存,只改变相关标志位,如零标志。例:TESTAX,01H;测试AX的第0位

JZEVEN;为0转移,条件转移指令JZ,下面要讲到例:TESTAX,01H;测试AX的第0位

JNZEVEN;为1转移9710、条件转移指令[程序何往?凭啥条件?]①JZOPR测试条件:ZF=1,结果为零转移;②JNZOPR测试条件:ZF=0,结果不为零转移;③JCOPR测试条件:CF=1,有借位(进位)转移;

条件转移指令的应用举例:MOVCX,30MOVBX,0AGAIN:

INCBXDECCXJNZAGAINMOVAX,BX11、循环指令LOOP

MOVCX,30

MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX9812.比较指令CMPop1,op2;op1-op2有借位吗?执行后只改变借位标志注:op1是寄存器,op2是立即数或存储器单元;此指令要配合条件转移指令使用。例:x1x2为两个字节单元,请按由小到大顺序放入y1y2

字节单元。编程:moval,x1cmpal,x2jcminmovy2,al;如减法指令为SUB,将出错!

movy1,x2endd:movah,4chint21h;返回DOSmin:movy1,almovy2,x2jmpendd;无条件转移作业:请按由大到小顺序放入y1y2字节单元。9912、子程序的调用与返回指令

CALL调用指令

RET返回指令14、中断的调用与返回指令

INTN调用指令,N为中断号

IRET从中断服务子程序中返回指令

注意:这里是软件中断的调用但无论是怎么进入的中断服务子程序,子程序的最后结束句必须是IRET100常用伪指令:1、等值伪指令:EQUmmequ56;定义后,mm就等于56

2、定义数据的伪指令:DB,DW

它们分别定义:1个字节、2个字节

ABCDB39,250,?,0,?;定义字节单元

DEFDW983,2358,?,?;定义字单元(像数组)3、地址计数器:$

arraydb32,43,56,8,65countequ$-array4、段定义伪指令:SEGMENT……ENDS〈段名〉SEGMENT..〈段名〉ENDS第4章

汇编语言程序设计

《微机原理与接口技术》102

本章主要内容汇编语言程序的格式简单程序的编写103汇编语言程序的格式●第一步:定义各段●第二步:给各段寄存器装段值(代码段除外)●第三步:展开写程序(在代码段中写)104常用汇编指令总复习:1、MOVAX,1234H立即寻址方式指令

2、MOVAX,[1234H]直接寻址方式

指令3、

MOVAX,BX寄存器寻址方式

4、MOVAX,[BX]

寄存器间接寻址方式5、

MOVAX,[BX][DI]基址变址寻址方式6、INAX,28HI/O口传送指令—设备信号读入7、

OUT5,ALI/O口传送指令—写入设备8、

JCOPR有进位转移到OPR9、JZOPR结果为零转移到OPR10、JNZOPR结果非零转移到OPR11、JMP

OPR无条件转移到OPR12、MOVBX,OFFSETLIST

地址传送指令13、ADCDX,BX带进位加14、ABCDB39,250,?,0,?定义数据的伪指令15、SEGMENT……ENDS段定义伪指令105汇编语言程序的格式数据段名SEGMENT

;SEGMENT

段定义伪指令,与ENDS构成一对使用数据空间预置数据段名ENDS堆栈段名

SEGMENT

堆栈空间预置堆栈段名ENDS代码段名SEGMENTASSUME

段地址说明START:

段地址装填(除代码段CS外,其它段均要装填。CS段是系统在加载程序后自动装填的,即由操作系统的任务管理程序自动完成装填的,此项装填不需要用户管理。)主程序体

..代码段名ENDS;代码段结束

ENDSTART;全部程序结束106datasegment;数据段

arraydb32,43,56,8,65countequ$-arraysumdw?dataendsstacksegment;堆栈段

stakdb10dup(?)stackendscodesegment;代码段

assumecs:code;段地址说明

ds:datass:stack;前面全是伪指令

start:movax,data;段地址装填

movds,axmovax,stackmovss,ax;;;;代码段不用装填!!

movdi,offsetsum;有效地址

movbx,offsetarraymovcx,countmovax,0Lop:addal,[bx]adcah,0;带进位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart例:编一个程序,其功能是对5个数据求和,并将结果放入SUM单元。107

几点易混淆的概念datasegmentarraydb32,43,56,8,65countequ$-arraysumdw?dataends

stacksegmentstakdb10dup(?)stackendscodesegmentassumecs:code,ds:datass:stackstart:movax,datamovds,ax;数据段赋值。注意1:;通过寄存器送ds是必;须的;注意2:data是;segment定义的特殊;符号,否则mov存的;将不是段。

movax,stackmovss,ax;堆栈段赋值

movdi,offsetsummovbx,offsetarray

;若写成movbx,array;或写成movbx,[array]??

movcx,countmovax,0Lop:addal,[bx]adcah,0;带进位加

incbxlooplopmov[di],axmovah,4chint21h;返回DOSCodeendsendstart108datasegment;数据段

x1db?maxdb?mixdb?dataendscodesegment;代码段

assumecs:code;段地址说明

ds:datastart:movax,data;段地址装填

movds,axmov

al,65cmpal,[x1];cmpal,x1也可

jcaaamovmax,65;

jmpbbb

aaa:movmax,[x1]jmpenddbbb:moval,8cmpal,[x1]jcenddmovmin,[x1]jmpcccendd:movmin,8ccc:movah,4chint21h;返回DOScodeendsendstart作业1:编一个程序,将6个数据32,43,56,8,65,x1的最大数放入MAX单元,将最小数放入MIN单元。注意:x1为放有数的字节单元(符号地址)。109作业2:编一个程序,将3个数据x1,x2,x3的最大数放入MAX单元,将最小数放入MIN单元。注意:x1,x2,x3为三个放有数的字节单元。解:datasegment;数据段

x1db?x2db?x3db?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论