版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章冯式结构(计算器中心各器件功能)输入:将信息转换成机器能识别的形式储存器:存放数据和程序运算器:算术运算逻辑运算控制器:指挥程序运行输出:将结果转换成人们熟悉的形式计算机系统组成1.中央处理器CPU或称微处理器:中央处理器(CPU)由运算器和控制器组成。2.存储器:存放程序和数据。程序是计算机操作的依据,数据是计算机操作的对象。3.总线:地址总线AB 、数据总线DB 、控制总线CB4.输入/输出接口电路三总线数据总线DB (Data Bus)地址总线AB (Address Bus)控制总线CB (Control Bus)定点数表示方法小数点的位置固定在最低位的右边(表示整数)或者固定在次
2、最高位的左边(表示有符号的纯小数)。 n-bit定点数表示范围(补码):无符号数02n-1,有符号数-2n-12n-1-1浮点数表示方法形式:M×BE(M尾数/有效数,B基数,E指数) 第二章EU BIU(功能)EU作用:负责指令执行,完成指令的操作BIU作用:根据EU的请求,执行CPU对存储器或I/O接口的总线操作寄存器数据寄存器AX(Accumulator Register)累加器一般用来存放参加运算的数据和结果,在乘、除法运算、I/O操作、BCD数运算中有不可替代的作用。BX(Base Register)基址寄存器除可作数据寄存器外,还可放内存的逻辑偏移地址,而AX,CX,DX
3、则不能。CX(Counter Register)将它称作计数寄存器,是因为它既可作数据寄存器,又可在串指令和移位指令中作计数用。DX(Data Register)DX除可作通用数据寄存器外,还在乘、除法运算、带符号数的扩展指令中有特殊用途。指针寄存器SP,BP:作地址指针,有效地址的偏移量 SP:堆栈指针BP:存放于堆栈段某数据区基址的偏移地址变址寄存器SI,DI :当前数据段中数据的偏移地址,使用时自动加1SI:指向源操作数DI:指向目的操作数指令指针寄存器IP是一个16位的专用寄存器。当BIU从内存中取出一条指令,自动修改IP,始终指向下一条将要执行的指令在现行代码段中的偏移量。 8086
4、/8088中的某些指令执行后会改变IP的内容,但用户不能编写指令直接改变IP 的内容。IP是指令地址在代码段内的偏移量(又称偏移地址),IP要与CS配合共同构成物理地址。状态标志寄存器 FF是一个16位的专用寄存器,其中6位状态位用于存放运算结果的特征,3位控制位用于控制CPU的操作 。状态位SF位:符号位(SF=1 负数;SF=0 正数)ZF位:零标志位(ZF=1 运算结果为0;ZF=0 运算结果不为0)CF位:进位标志位(CF=1最高位有进位/借位;CF=0最高位无进位/借位) AF位:辅助进位(AF=1 有进位;AF=0 无进位;辅助位表示低4位有无进位或借位)PF位:奇偶标志位(PF=
5、1 运算结果1的个数为偶数;PF=0 运算结果1的个数为奇数)OF位:溢出位(OF=1 有溢出;OF=0 无溢出)主要对带符号数 运算数值过大,侵占了符号位三个控制位DF:方向标志控制数据串操作指令的步进方向DF=1 减址方式(STD)DF=0 增址方式(CLD)IF:中断允许标志对可屏蔽中断IF=1 开中断(STI)IF=0 关中断(CLI)TF:陷阱标志程序调试TF=1 单步执行TF=0 连续正常执行总线周期CPU完成对存储器或I/O端口的一次访问所需的时间;8086一个基本的总线周期一般由4个时钟周期组成。读写周期时序读周期:T1:输出地址;T2:总线浮空、缓冲;T3 T4:从总线输入数
6、据传送数据写周期:T1:输出地址;T2 T4:把输出数据送到总线上。若存储器或外设速度慢,则向CPU发送READY无效信号,可在T3后插入一个或多个等待周期TW;就绪后,发READY有效信号,CPU自动脱离TW而进入T4状态。若一个总线周期后不执行下一个总线周期,即总线上无数据传输操作,系统总线处于空闲状态,此时执行空闲周期。8086储存格式规则字:从偶地址开始存放的字非规则字:从奇地址开始存放的字特点:规则字的存取在一个总线周期内即可完成非规则字的存取则需2个总线周期I/O端口组织8086系统和外部设备之间是通过I/O接口相互传输信息的。端口:I/O芯片上的一个或一组寄存器,一个I/O芯片上
7、有若干个端口。端口号(端口地址):为每个I/O端口分配的地址,具有惟一性。 微机I/O端口有两种编址方式(1)统一编址 (2)独立编址统一编址 又称“存储器映射方式”。在这种编址方式下 ,I/O端口地址置于存储器空间中,和存储单元统一编址。 优点:无需专门的I/O指令,对端口操作的指令类型多,从而简化了指令系统的设计。缺点:端口占用存储器的地址空间,使存储器容量更加紧张,同时端口指令的长度增加,执行时间较长,端口地址译码器较复杂。独立编址 又称“I/O映射方式”。将端口单独编址构成一个I/O空间,不占用存储器地址空间。 这就需要设置专门的输入(IN)、输出指令(OUT)对I/O端口进行操作。
8、优点:端口所需的地址线较少,地址译码器较简单,采用专用的I/O指令,端口操作指令执行时间少,指令长度短 。缺点:输入输出指令类别少,一般只能进行传送操作。8086系统采用的是I/O独立编址方式。端口地址说明8086使用A15A0这16根地址线作为I/O端口地址线,可访问端口最多可达64K个8位端口或32K个16位端口。和存储器的字单元一样,对于奇地址的16位端口的访问,要进行两次操作才能完成。16位的I/O端口地址无需经过地址加法器产生,因而不使用段寄存器。从地址总线上发出的端口地址仍为20位,只不过最高四位A19A16为0。第三章指令的基本格式操作码说明计算机要执行哪种操作,如传送、运算、移
9、位、跳转等操作,它是指令中不可缺少的组成部分操作数是指令执行的参与者,即各种操作的对象每种指令的操作码:用一个助记符表示(指令功能的英文缩写)对应着机器指令的一个或多个二进制编码指令中的操作数:可以是一个具体的数值可以是存放数据的寄存器或指明数据在主存位置的存储器地址寻址方式寻找指令中所需的操作数或操作数地址的方式称为寻址方式系统设计了多种操作数的来源直接给出所使用的操作数本身给出操作数所在的寄存器、存储器或I/O端口的地址给出操作数所在的寄存器、存储器或I/O端口的地址的计算方法。立即数寻址指令中的操作数直接存放在机器代码中,紧跟在操作码之后立即数可以是8位、16位或32位数值立即数寻址方式
10、只允许源操作数为立即数,目标操作数必须是寄存器或存储器不需要访问存储器,执行速度快Eg:MOV AX, 0102H ; AX0102H固定寻址指令中的操作数是CPU中某个固定寄存器,该寄存器被隐含于操作码中。不需要访问存储器,执行速度快寄存器寻址操作数存放在CPU的内部寄存器reg中:8位寄存器r8:AH、AL、BH、BL、CH、CL、DH、DL16位寄存器r16:AX、BX、CX、DX、SI、DI、BP、SP4个段寄存器seg:CS、DS、SS、ES无需访问存储器,执行速度快源操作数和目的操作数可同时使用寄存器寻址Eg:MOV AX, BX ; AXBX储存器寻址操作数在主存储器中,用主存地
11、址表示程序设计时,8086采用逻辑地址表示主存地址段地址在默认的或用段超越前缀指定的段寄存器中指令中只需给出操作数的偏移地址8086设计了多种存储器寻址方式1、 直接寻址方式直接寻址方式的有效地址在指令中直接给出默认的段地址在DS段寄存器,可使用段超越前缀改变用中括号包含有效地址,表示取该存储单元的内容Eg: MOV AX, 2000H; AXDS:2000HMOV AX, ES:2000H ; AXES:2000H2、 寄存器间接寻址方式有效地址存放在基址寄存器BX或变址寄存器SI、DI中,默认的段地址在DS段寄存器,可使用段超越前缀改变Eg:MOV AX, BX; AXDS:BX 如果指令
12、中指定的寄存器是BP,则操作数在堆栈段SS中: MOV BP, AX假设 (SS)= 1000H, (BP)=3000H, (AX)=1234H 物理地址=(SS)*16+(BP)3、 寄存器相对寻址方式有效地址是寄存器内容与有符号8位或16位位移量之和,寄存器可以是BX、BP或SI、DI段地址对应BX/SI/DI寄存器默认是DS,对应BP寄存器默认是SS;可用段超越前缀改变Eg:MOV AX, 06HSI 或 MOV AX, SI 06H4、 基址变址寻址方式有效地址由基址寄存器(BX或BP)的内容加上变址寄存器(SI或DI)的内容构成:段地址对应BX基址寄存器默认是DS,对应BP基址寄存器
13、默认是SS;可用段超越前缀改变5、 相对基址变址寻址方式有效地址是基址寄存器(BX/BP)、变址寄存器(SI/DI)与一个8位或16位位移量之和段地址对应BX基址寄存器默认是DS,对应BP基址寄存器默认是SS;可用段超越前缀改变6、 串寻址串寻址方式仅在8086的串指令中使用根据设定的方向标志(DF),SI和DI会自动调整。I/O(输入/输出)端口寻址(1) 直接端口寻址为双字节指令,可寻址的端口数为0255可有字和字节两种使用方式(2) 寄存器间接端口寻址为单字节指令端口地址放在DX中,地址为0000HFFFFH可有字和字节两种使用方式8086指令系统包括6大类133条基本指令(1) 数据传
14、送类指令通用数据传送指令 MOV PUSH POP XCHG传送指令MOV(move)格式:MOV DST, SRC操作:DST(SRC)即把源操作数的内容送入目的操作数说明:可以进行8位或16位数据的传送源操作数可为立即数、寄存器、存储器操作数目的操作数可为寄存器、存储器操作数MOV指令立即数传送以字母开头的常数要有前导0MOV指令通用寄存器传送寄存器具有明确的字节和字类型MOV指令段寄存器传送对段寄存器的操作不灵活非法指令(1) 两个操作数类型不一致在绝大多数双操作数指令中,目的操作数和源操作数必须具有一致的数据类型,或者同为字量,或者同为字节量,否则为非法指令非法指令(2) 无法确定是字
15、节量还是字量操作当无法通过任一个操作数确定操作类型时,需要利用汇编语言的操作符显式指明非法指令(3)两个操作数都是存储器非法指令(4)违反对段寄存器操作的限制不允许在段寄存器之间直接传送数据MOV DS, ES;非法指令不允许向段寄存器送立即数MOV DS, 100H;非法指令不允许用CS或IP作为目的操作数MOV CS, SI;非法指令非法指令(5)立即数作为目的操作数交换指令XCHG(exchange)功能:把两个地方的数据进行互换格式:XCHG OPR1, OPR2操作:(OPR1)(OPR2)寄存器与寄存器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据堆栈操作指
16、令堆栈是一个“后进先出LIFO”(或说“先进后出FILO”)的主存区域,位于堆栈段中;SS段寄存器记录其段地址堆栈只有一个出入口,即当前栈顶;用堆栈指针寄存器SP指定堆栈只有两种基本操作:进栈和出栈,对应两条指令PUSH和POP进栈指令PUSH功能:将寄存器、段寄存器或存储器中的一个字数据压入堆栈,堆栈指针减2。格式:PUSH SRC操作: SP(SP)-2 (SP)+1,(SP)(SRC)出栈指令POP功能: 将栈顶元素弹出送至某一寄存器、段寄存器(除CS外)或存储器,堆栈指针加2。格式:POP DST操作:DST(SP)+1,(SP) SP(SP)+2堆栈操作的特点字操作低地址字节送低字节
17、,高地址字节送高字节先进后出,但可存储器寻址方式随机存取其中数据堆栈段常用来保存临时数据累加器专用传送指令 IN OUT XLAT累加器是数据传输的核心IN 输入指令格式1:IN AL, Port或IN AX, Port格式2:IN AL, DX或IN AX, DX操作:AL/AX(Port) 从外设读入数据 AL/AX(DX)以DX内容为端口地址读入 说明:用Port指明端口地址时,地址范围为00H0FFH以DX间接给出端口地址时,最大地址为0FFFFHOUT输出指令格式1:OUT Port, AL或 OUT Port, AX格式2:OUT DX, AL或OUT DX, AX操作:(Port
18、)(AL)/(AX)传送数据到Port端口 (DX)(AL)/(AX)传送数据到DX指出的端口说明:用Port指明端口地址时,地址范围为00H-0FFH以DX间接给出端口地址时,最大地址为0FFFFH注意:(1)只能使用累加器做为I/O指令的取数或送数的寄存器(2)使用IN AL/ AX, DX格式时必须先将端口地址赋给DX寄存器(3)运行I/O程序时,必须确定端口地址查表转换指令XLAT将BX指定的区域中、AL指定的位移处的一个字节数据取出赋给AL格式:XLAT OPR 或 XLAT操作:AL(BX)+(AL)地址目标传送指令 LEA LDS LES有效地址传送指令LEA将存储器操作数的有效
19、地址送至指定的16位通用寄存器格式:LEA DST, SRC操作:DSTSRC的EA注意以下两条指令差别: LEA BX,BUFFER MOV BX,BUFFER前者表示将符号地址为BUFFER的存储单元的偏侈地址取到 BX中;后者表示将BUFFER存储单元中的内容取到 BX中.装载数据段指针指令LDS格式:LDS DST, SRC操作:DST(SRC) DS(SRC+2)装载附加段指针指令LES格式:LES DST,SRC操作:DST(SRC) ES(SRC+2)说明:源操作数必须是存储器操作数目的操作数必须是寄存器标志传送指令 LAHF SAHF PUSHF POPF读标志指令LAHFLA
20、HF把标志寄存器低8位中的5个标志位传送到AH中的指定位设置标志指令SAHFSAHF的功能与LAHF的功能正好相反标志进栈指令PUSHF格式:PUSHF操作:SP(SP)-2 (SP)+1,(SP)(FLAGS)标志出栈指令POPF格式:POPF操作:FLAGS(SP)+1,(SP) SP(SP)+2小结1、数据传送指令不影响标志位, 除SAHF和POPF这两条指令外2、除XCHG指令外,都是从源到目的的单向传送(2) 算术运算类指令算术运算类指令用来执行二进制的算术运算:加减乘除。这类指令会根据运算结果影响状态标志,有时要利用某些标志才能得到正确的结果。有单操作数指令,也有双操作数指令加法指
21、令 ADD ADC INC AAA DAA 减法指令 SUB SBB DEC NEG AAS DAS CMP 乘法指令 MUL IMUL AAM除法指令 DIV IDIV AAD CBW CWDADD 常规加指令格式:ADD DST, SRC操作:DST(DST)+(SRC)ADC 带进位加指令格式:ADC DST, SRC操作:DST(DST)+(SRC)+(CF)说明:该指令除了多一个进位标志外,同ADD指令常用于多字节运算双字加法规则:1. 先加低16位,如有进位的话,进位存入CF2. 然后加高16位,必须用ADC,以便能加上进位位INC 增1指令格式:INC DST操作:DST(DST
22、)+1说明:DST可以是寄存器或存储器操作数DST不允许是立即数注意:此指令不影响CF标志组合十进制加法调整指令DAA压缩BCD码调整非组合十进制加法调整指令 AAA非压缩BCD码调整说明:1. 在AL中进行2. 自动完成加6调整3. 一般用于二进制加法指令ADD之后SUB 常规减指令格式:SUB DST, SRC操作:DST(DST)-(SRC)SBB带借位减指令格式:SBB DST, SRC操作:DST (DST)-(SRC)-(CF)说明:该指令除了多一个进位/借位标志外,同SUB常用于多字节运算DEC 减1指令格式:DEC DST操作:DST (DST)-1说明:用法同INC指令NEG
23、 求补指令格式:NEG DST操作:DST -(DST) 说明-(DST)表示操作数按位求反后末位加1执行时,用零减去操作数CMP 比较指令格式 :CMP DST, SRC操作:(DST)-(SRC)说明:1、两个操作数相减,但结果不回送2、影响标志位的值,下一指令常是条件转移指令3、必须区分无符号数比较与有符号数比较 MUL 无符号数乘指令 格式: MUL SRC操作: 字节乘, AX (AL)*(SRC)byte 字乘, DX:AX (AX)*(SRC)word说明:约定一个乘数在累加器中 对标志位影响:若乘积的高半部分(字节相乘时为AH,字相乘时为DX)不为零,则CF1,OF1;否则CF
24、=0,OF=0。其它标志位为任意值 IMUL 符号数乘指令 格式: IMUL SRC操作: 字节数乘, AX (AL)*(SRC)byte 字数据乘, DX:AX (AX)*(SRC)wordAAM 非压缩BCD码乘调整指令格式:AAM 操作:将AX中的两个非压缩BCD码之积进行调整调整过程:将AL除以10, 商送AH, 余数送AL说明:8086指令系统没有提供对组合BCD码乘法的调整指令DIV 无符号数除指令格式:DIV SRC操作:AL(商), AH(余数)(AX)/(SRC)byte AX(商), DX(余数)(DX:AX)/(SRC)wordIDIV 带符号数除指令格式:IDIV SR
25、C操作:AL(商), AH(余数)(AX)/(SRC)byte AX(商), DX(余数)(DX:AX)/(SRC)word3. AAD 非压缩BCD码除调整指令格式:AAD 操作:在除法运算前,用该指令将AX中 的非压缩BCD码形式的被除数调整为二进制数,然后做除法运算调整过程: (AL)+(AH)*10AL 0AH (AX)/除数,商AL,余数AHCBW 符号扩展指令字节扩展成字格式:CBW操作:扩展AL中的符号至AH中,将8位数扩展成等效的16位数CWD 符号扩展指令字扩展成双字格式:CWD操作:扩展AX中的符号至DX中,将16位数扩展成等效的32位数说明:用于在有符号数除法之前,形成双
26、倍长度的被除数小结1、包括二进制运算及十进制运算调整指令2、指令操作结果影响标志位3、注意有符号数与无符号数的区别4、乘、除法指令是单操作数指令,AX/DX5、SUB与CMP指令异同6、INC/DEC多用于修改地址指针和循环 计数器7、十进制运算调整指令分为压缩的和非压缩的二种,仅限于字节(3) 逻辑运算与移位类指令以二进制位为基本单位进行数据的操作当需要对字节或字数据中的各个二进制位操作时,可以考虑采用位操作类指令注意这些指令对标志位的影响1. 逻辑运算指令AND OR XOR NOT TESTNOT 逻辑非指令格式: NOT OPR操作: OPR按位取反后送回原处AND 逻辑与指令格式:
27、AND DST, SRC操作: (DST)(DST)&(SRC)OR 逻辑或指令 格式: OR DST, SRC操作:(DST)(DST)|(SRC)XOR 异或指令格式: XOR DST, SRC操作: (DST)(DST)与(SRC)按位异或TEST 测试指令格式:TEST OPR1, OPR2操作:(OPR1)&(OPR2)说明:不送回操作结果,仅影响标志位逻辑运算指令对标志位的影响:无进/借位 ,NOT指令不影响标志位移位指令将操作数移动一位或多位,分成逻辑移位和算术移位,分别具有左移或右移操作第一操作数是指定的被移位的操作数,可以是寄存器或存储单元;第二操作数表示移位
28、位数该操作数为1,表示移动一位该操作数为CL,CL寄存器值表示移位位数 (移位位数大于1只能CL表示)影响标志位2. 移位指令SHL SHR SAL SAR SAL reg/mem,1/CL;reg/mem左移1或CL位;最低位补0,最高位进入CFSAR reg/mem,1/CL;reg/mem右移1/CL位;最高位不变,最低位进入CFSHL reg/mem,1/CL;与SAL是同一条指令SHR reg/mem,1/CL;reg/mem右移1/CL位;最高位补0,最低位进入CF逻辑移位指令用于无符号数的移位算术移位指令用于带符号数的移位移位类指令的特点对寄存器或存储单元中8位或16位数的移位影
29、响C,P,S,Z,O标志。结果未溢出时: 左移1位操作数*2 右移1位操作数/2带符号数左移会出现溢出情况 最高位CF OF=1 溢出 最高位CF OF=0 没有溢出3. 循环移位指令ROL ROR RCL RCR循环移位指令类似移位指令,但要将从一端移出的位返回到另一端形成循环。分为:ROL reg/mem,1/CL;不带进位循环左移ROR reg/mem,1/CL;不带进位循环右移RCL reg/mem,1/CL;带进位循环左移RCR reg/mem,1/CL;带进位循环右移循环移位指令的操作数形式与移位指令相同,影响进位标志CF,但不影响SF、ZF、PF、AF标志循环移位指令的主要用途:
30、检测寄存器或存储单元中含1或含0的个数 与移位指令联合使用,实现多倍精度的左移和右移(4) 串操作类指令(5) 控制转移类指令1. 无条件转移指令 JMP段内直接转移 JMP DISP指令中以符号数的形式直接直接给出一个相对于IP的位移量:位移量 转移范围 汇编语言中格式8位 -128+127 JMP SHORT OPRD16位-32768+32767 JMP NEAR PTR OPRD由于是段内转移,故转移后CS内容保持不变JMP WORD PTR OPR 段内间接转移操作: IP(OPR) /转移地址是reg或mem中的内容 OPR是基址变址寄存器或存储器操作数, 不可为立即数段间直接转移
31、操作数是要转移到的目的段地址和偏移地址如:JMP2000H:1000H执行时,(IP)1000H,(CS)2000H直接地址也可为标号,它是另一段代码段距段首址的偏移量,段间直接转移指令中的符号地址前应加操作符FAR PTR。JMP FAR PTR far_label其中的far_label为远类型的标号。当要转移到的地址由标号给出时IP 标号代表的偏移量 CS标号所在段首地址JMP DWORD PTR OPR ; 段间间接转移OPR是存储器操地址,指向2个字单元 IP(DS)*16+OPR) CS(DS)*16+OPR+2)2.条件转移指令格式:J条件 标号操作:测试条件,若满足,则跳转到标
32、号处执行,即 IP(IP)+disp8 ;否则,执行后续指令说明:根据上一条指令所设置的条件码判别测试条件转移范围在-128到+127字节3.循环指令 LOOP LOOPZ LOOPNZ4. 子程序调用(返回)指令 CALL RET过程(子程序) :一段具有特定功能的,供其它程序调用的公用程序。应用特点子程序执行结束后一般均要返回调用程序。调用子程序时,IP(CS)的内容被压入堆栈栈顶。从子程序返回时,栈顶的内容又被弹出到IP(CS)。一次定义,多次调用;可带参数调用,以完成不同的功能。格式1: CALL 子程序名 ;段内直接调用例如:CALL 1000H;格式2:CALL reg/mem ;
33、段内间接调用 例如:CALL AX;格式3:CALL FAR PTR 子程序名;段间直接调用 例如:CALL 2500H:1000H;格式4:CALL DWORD PTR mem ;段间间接调用例如:CALL DWORD PTR DI;说明:类似于段内无条件转移指令;但CALL执行时,它首先将IP内容压栈,然后把指令中给出的位移量加到IP上。控制转移指令小结1、无条件转移指令JMP有段内、段间转移之分,有直接、间接转移之分2、无条件转移指令有短、近、远转移,但条件 转移指令都是短转移3、跟随在短的或近的转移后面的位移量是从下条指令到 转移地址的距离, IP+disp4、循环控制指令不影响标志位
34、5、过程是实现一个任务的指令组,可以用于程序中的任何地方,CALL指令连接到过程,而RET指令从过程返回6、CALL指令是PUSH和JMP的组合,执行CALL指令时, 将返回地址压入栈中,然后转移到过程7、过程调用指令CALL也有段内、段间调用之分,有直接、间接调用之分(6) 处理器控制类指令 1、标志处理指令 CLC 进位标志CF置0 CMC 进位标志CF求反 STC 进位标志CF置1 CLD 方向标志DF置0 STD 方向标志DF置1 CLI 中断标志 IF置0 STI 中断标志 IF置12、其他处理器控制指令HLT 停机NOP 空操作WAIT 等待 8086CPU支持256个中断,中断用
35、编号区别每个编号代表一个中断向量号中断向量中断服务程序的入口地址(CS:IP),4字节中断服务程序实现特定功能的专门例行程序中断向量表存放中断向量的存储区域,存储区最低1K字节INT指令的操作:将FLAGS压入堆栈;将INT指令下一条指令的地址压栈(即把CS和IP的内容压栈);取中断服务程序入口地址送入CS和IP。 INT指令只影响IF和TF, 对其余标志位无影响INT指令可用于调用系统服务程序,如INT 21H执行INT 21H指令后, CS=? IP=?因为n=21H,所以n×4=84H。下图中,(0:0084H)=2000H:1123H所以: CS=2000H IP=1123H
36、IRET指令执行的操作为: 栈顶内容弹出到IP 栈顶内容弹出到CS 栈顶内容弹出到FLAG第四章汇编概念汇编:汇编源程序需翻译成机器语言,变成可执行文件,机器才能执行。高级语言中称该过程为“解释”或“编译”。执行翻译的程序称为“汇编程序”。三个逻辑段汇编语言源程序通常由一个或几个程序模块组成,每个模块一般由三个逻辑段组成:数据段存放数据、变量堆栈段堆栈区域代码段存放程序指令宏汇编指令语句是由8086指令助记符构成的语句。由CPU执行,每条指令与一条机器码指令对应。伪指令语句是汇编控制指令,用于指示汇编程序如何汇编源程序,利用它定义和说明常量和变量的属性及存储器单元的分配等。在汇编中不产生目标代
37、码,指令语句汇编生成机器码;伪指令汇编不生成机器码。语句的格式标号: <指令助记符> 操作数 ;注释符号名 <伪指令助记符> 操作数 ;注释变量与标号变量有三种属性:1、段属性变量所在段的起始地址2、偏移属性从段起始地址到定义变量的位置之间的字节数3、类型属性该变量所保留的字节数 DB 1个字节 DW 2 个字节 DD 4个字节 DQ 8个字节 DT 10个字节标号也有三种属性:1、段属性定义标号所在段的起始地址2、偏移属性从段起始地址到定义标号的 位置之间的字节数3、类型属性表示它的转移特性 NEAR (近) 段内转移 FAR (远) 段间转移运算符分析运算符:提取标
38、号和变量的属性 (SEG,OFFSET,TYPE,LENGTH,SIZE)(1)SEG:提取标号或变量的段基址 OFFSET:提取标号或变量的偏移地址(2)TYPE:提取标号或变量的类型属性,常用数字表示 (3)LENGTH和SIZE(两者只用于DUP定义的变量)LENGTH:提取数组变量中所含变量的个数SIZE:提取数组变量中所含变量的总字节数OFFSET只能取静态的偏移地址;LEA指令可取静态和动态的偏移地址基本伪指令数据定义伪指令(DB/DW/DD/DQ/DT)格式为:变量名 伪指令 初值表操作:为程序分配指定数目的存储单元变量名为用户自定义标识符,表示初值表首单元的逻辑地址,常称为符号
39、地址。变量名也可以没有。初值表是用逗号分隔的参数,主要由常量、数值表达式或“?”组成。 操作数?表示未赋初值,用来保留存储空间例:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,? $表示地址计数器的当前值。多个存储单元如果初值相同,可以用复制操作符DUP进行定义:重复次数 DUP(重复内容)如上面RSV亦可写成: RSV DW 8 DUP(?)示例操作数是常数或表达式 X1 DW 250*250 ;为X1分配2个字节,初值62500X2 DD 10203040H;为X2分配4个字节,并赋初值X3 DQ (120+50)/10;为X3分配8个字节,初值17
40、X4 DB 10, 20, 30;多项定义,X4被分配3个字节操作数为字符串STRING1 DB HELLO STRING2 DB H, E, L, L, O字符串用DB定义,被定义串以单引号括起来串中可包含数字符、大小写英文字母、回车符、 换行符、空格、?、$、下划线_等字符串以ASCII码形式存储在存储单元中。 符号定义伪指令(EQU,=)格式:名字 EQU 表达式 名字 = 表达式 操作:为表达式取一个名字,供以后引用说明: 1、表达式可为常数、变量、标号、指令助记符、字符串 2、在一个源程序中,被EQU伪指令赋值的符号不能再次赋值,而用=定义的符号名可重复定义 3、赋值语句仅在汇编源程
41、序时,作为替代符号用,不产生目标代码,也不占有存储单元标号定义伪指令LABEL格式:标号 LABEL 类型(FAR,NEAR) 变量 LABEL 类型(BYTE,WORD,.) 过程名 LABEL 类型(FAR,NEAR)操作:在已定义变量基础上赋于新类型变量、标号。一般用于给同一地址指针赋予两种类型属性4. 段定义伪指令格式:段名SEGMENT 定位类型组合类型'类别名' . 段名 ENDS操作:定义逻辑段 成对出现,二者前面的段名应一致。SEGMENT说明了一个段的开始,ENDS说明了一个段的结束。对数据段和堆栈段,段中的语句一般是变量定义。对代码段则是指令语句。SEGME
42、NT语句可选参数,规定逻辑段的其他属性。1) 定位类型说明如何确定逻辑段的边界。有四种:BYTE : 逻辑段从字节边界开始,即段可以从任何地址开始。WORD : 逻辑段从字边界开始。即段的起始地址必须是偶数。PARA(Paragraph): 逻辑段从一个节 (16个字节) 的边界开始。即段的起始地址应能被16整除, 或这说段起始物理地址应为××××0H。默认类型PAGE : 逻辑段从页边界开始。256字节称为一页,故段的起始物理地址应为×××00H。2) 组合类型说明不同模块与其它段的组合方式。NONE:该段独立PUBLIC
43、: 所有此类型的同名段组合成一个逻辑段,公用一个段地址,运行时装入同一个物理段中。STACK : 专用于说明堆栈段,组合方式同PUBLICCOMMON : 所有此类型的同名段具有相同的起始地址(覆盖),共享相同的存储区域。AT <数值表达式> : 按绝对地址定位,段地址就是表达式的值。MEMORY:本段定位在所有其他段的最高地址段寻址伪指令 格式:ASSUME 段寄存器:段名 , 段寄存器:段名.操作:明确段与段寄存器的关系。说明: 1、代码段中必须至少有一个ASSUME语句 2、ASSUME可以出现在源程序中的任意地方 3、仅说明段与段寄存器的对应关系,并没有把 段基址值送入段寄
44、存器 过程定义伪指令格式:过程名 PROC 属性 . 过程体 RET . 过程体 过程名 ENDP说明:1、过程名是该子程序名,也是指令CALL的目标 操作数2、过程的属性有两种:NEAR和FAR,分别表示段内调用和段间调用。若省略,则默认为NEAR3、至少有一条RET指令,可在过程中的任何位置程序计数器和定位伪指令1)程序计数器$:表示程序下一个所能分配的存储单元的偏移地址2)定位伪指令ORG格式1: ORG 表达式 格式2: ORG $+表达式 功能:规定段内指令或数据存放的开始地址第五章层次式结构层次式存储系统结构分为四级:寄存器组、高速缓存、主存、外存。越靠近CPU的存储器,其存储容量
45、越小,存取速度越快,单位容量价格越高。上述四级存储系统也可看成两个二级系统:高速缓存主存:用于提高CPU访问存储器的速度;CPU也可直接访问主存。主存外存:用于弥补主存容量的不足;CPU只能通过主存访问外存。RAM与ROM随机存取存储器RAM:可读可写、断电丢失只读存储器ROM:正常只读、断电不丢失存储单元的排列结构存储芯片内基本存储单元的排列结构通常有以下两种: 一种是“多字一位”结构(简称位结构),其容量表示成N字×1位。例如,1K×1位,4K×1位。另一种排列是“多字多位”结构(简称字结构),其容量表示为:N字×4位/字或N字×8位/字。
46、例如4K×8位RAM结构SRAM特点:1.用双稳态触发器存储信息。2.速度快(<5ns),不需刷新,外围电路比较简单,但集成度低(存储容量小,约1Mbit/片),功耗大。3.在PC机中,SRAM被广泛地用作高速缓冲存储器Cache。DRAM的主要特点与SRAM相比,DRAM基本存储电路所用的MOS管少,从而可以提高存储器的存储密度并降低功耗。DRAM的缺点是存取速度比SRAM慢;需要定时刷新,因此需增加相应的刷新支持电路;此外,在刷新期间CPU不能对内存模块启动读/写操作,从而损失了一部分有效存储器访问时间。DRAM的高存储密度、低功耗及每位价格便宜的突出优点,使之非常适用于在
47、需要较大存储容量的系统中用作主存储器。现代PC机均采用各种类型的DRAM作为可读写主存。ROM类型掩模(掩膜)式ROMMROM是厂家根据用户事先编写好的机器码程序,把0、1信息存储在掩模图形中而制成的芯片。芯片制成后,存储位的状态即0、1信息就被固定了(未连接MOS管的位线状态为1)。可编程PROM存储原理:二极管破坏型PROM 在出厂时,存储体中每条字线和位线的交叉处都是两个反向串联的二极管的PN结,字线与位线之间不导通(即所有存储内容均为“0”)。如果用户需要写入程序,则通过专门的PROM写入电路,产生足够大的电流把要写入“1”的那个存储位上的二极管击穿,造成这个PN结短路,只剩下顺向的二
48、极管跨连字线和位线。熔丝式PROM 用户编程时,靠专用写入电路产生脉冲电流,来烧断指定的熔丝,以达到写入“1”的目的。编程为一次性的。可擦除可编程EPROM可多次编程写入;掉电后内容不丢失;EPROM芯片上方有一个石英玻璃窗口,当用一定强度的紫外线透过窗口照射时,所有存储电路中浮栅上的电荷会形成光电流泄放掉,使浮栅恢复初态。一般照射2030分钟后,读出各单元的内容均为0FFH,说明EPROM中内容已被擦除。电可擦除EEPROM可在线编程写入;掉电后内容不丢失;电可擦除。EEPROM的擦除可以按字节分别进行,这是EEPROM的优点之一。字节的编程和擦除都只需10ms,并且不需要将芯片从机器上拔下
49、以及诸如用紫外线光源照射等特殊操作,因此可以在线进行擦除和编程写入。Flash(闪存)闪存也称快擦写存储器通过向内部控制寄存器写入命令的方法来控制芯片的工作方式,而非用引脚的信号来控制芯片的工作。ROM原理+RAM功能非易失性高速缓存(Cache)技术程序访问的局部性是Cache技术的基本依据。高速缓存(Cache)是位于CPU和主存之间的,容量较小,但操作速度很高的存储器。为了解决CPU与主存之间的速度匹配问题Cache系统的基本组成Cache模块(SRAM) 主存(DRAM) Cache控制器。命中率是反映Cache性能的主要参数命中率 = 命中次数÷访问总次数 × 1
50、00%Cache的“命中率”(hit rate)和Cache容量大小、Cache的控制算法、Cache的组织方式有关,当然还和所运行的程序有关。芯片拓展存储芯片数据线的处理若芯片的数据线正好8根:一次可从芯片中访问到8位数据全部数据线与系统的8位数据总线相连若芯片的数据线不足8根:一次不能从一个芯片中访问到8位数据利用多个芯片扩充数据位这种扩充方式简称“位扩充”多个位扩充的存储芯片的数据线连接于系统数据总线的不同位其它连接都一样这些芯片应被看作是一个整体片选端的译码存储系统常需利用多个存储芯片扩充容量,也就是扩充了主存储器地址范围这种扩充简称为“地址扩充”或“字扩充”进行“地址扩充”,需要利用
51、存储芯片的片选端对多个存储芯片(组)进行寻址这个寻址方法,主要通过将存储芯片的片选端与系统的高位地址线相关联来实现线选译码法线选法是指高位地址线不经过译码,直接作为存储芯片的片选信号。每根高位地址线接一块芯片,用低位地址线实现片内寻址。线选法的优点是结构简单,缺点是地址空间浪费大,整个存储器地址空间不连续,而且由于部分地址线未参加译码,还会出现地址重叠。部分译码法部分译码法是将高位地址线中的一部分(而不是全部)进行译码,产生片选信号。该方法常用于不需要全部地址空间的寻址能力,但采用线选法地址线又不够用的情况。采用部分译码法时,由于未参加译码的高位地址与存储器地址无关,因此存在地址重叠问题。当选用不同的高位地址线进行部分译码时,其译码对应的地址空间不同。全译码法全译码法是指将地址总线中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025云南省安全员考试题库及答案
- 教科版《种类繁多的动物》课件
- DB32T-家用电梯智能化要求及验收规范编制说明
- 《葡萄酒销售技巧》课件
- 三体 英文 介绍
- 《小草之歌》课件
- 大自然的语言(获奖课件)
- 《请让我来帮助你》课件
- 《画出你的想象》课件
- 培训需求分析课件
- 零工市场(驿站)运营管理 投标方案(技术方案)
- 2024年垃圾分类知识竞赛题库和答案
- 【课件】城镇与乡村课件2024-2025学年人教版地理七年级上册
- 传感器与执行元件制造考核试卷
- 福建省厦门市2023-2024学年高二上学期期末考试语文试题(原卷版)
- 生态河道治理工程施工组织设计
- 2024年基本级执法资格考试题库及解析(100题)
- 教育培训内部管理体制
- 2024年阿拉善中小学教师招聘真题
- 2021教科版五年级科学上册全册教案
- 2024年高考英语概要写作高分范文全
评论
0/150
提交评论