2 80X86
80X86汇编语言电子教案(3-2-MOV指令)
提供的基本寻址方式可以分为三类立即寻址寄存器寻址存储器寻址与存储器有关的寻址的有效地址由以下四种成分组成1位移量存放在指令中的一个81632位的数2基址存放在基址寄存器中的内容3变址存放在变址寄存器中的内容4比例因子386及后继机型增加的一个术语1无比例因子8086286386及后继机型共有位移量直接寻址基址或变址位移量基址或变址—基址变址寻址2带比例因子386及后继机型位移量变址比例因子比例变址寻址比例因子基址+比例因子说明这些寻址方式不仅可以用于源操作数的寻址也可以用于目的操作数的寻址唯一例外的是立即寻址只能用于源操作数例MOV [BX][DI]AX 则源操作数为寄存器寻址目的操作数为基址变址寻址存储器寻址时所确定的内存地址既可以是字节字也可以是双字地址那么上述指令的目的操作数的宽度是多少呢指令中操作数要具有明确的类型寄存器寻址类型确定存储器操作数寻址类型由变量的类型属性确定其它情况类型下操作数类型由指令中其它操作数的类型或指令缺省类型来确定确定的操作数为字类型指令指示对一定操作对象进行何种操作的命令指令系统计算机CPU的指令集合称为指令系统一指令集说明学习要求指令的基本功能二数据传送指令1通用数据传送指令2累加器专用传送指令3地址传送指令4标志寄存器传送指令5类型转换指令特点负责把数据地址或立即数传送到寄存器或存储单元中1通用数据传送指令1传送指令传送指令执行操作DSTSRC DST SRC 的类型要一致双字字节MOV AXMOV AH MOV AX MOV BXMOV MAST[BP][DI]MOV BL MOV BYTE PTR [BX]MOV DSMOV ES MOV AXMOV [BX]MOV DS例MOV EAX MOV ES 哪些指令为非法形式例MOV AXMOV AHMOV AXMOV BXMOV MAST[BP][DI]MOV BLMOV BYTE PTR [BX]MOV DSMOV ESMOV AXMOV [BX]MOV DS寄存器寄存器字寄存器寄存器字节存储器寄存器字存储器寄存器寄存器存储器字节立即数寄存器立即数存储器字节寄存器段寄存器存储器段寄存器段寄存器寄存器存储器存储器段寄存器段寄存器MOV ES立即数段寄存器MOV EAX存储器寄存器双字MOV CS AXMOV 5ALMOV EAX BX都是非法指令如为了使指令字不要过长规定双操作数指令的两个操作数中只能有一个使用存储器寻址方式因此不允许双存储器操作在有通用性MOV [BX]2带符号扩展传送指令有符号数的扩展MOVSX386及后继机型可用格式MOVSX DST, SRC执行操作本指令有两种格式REG1REG源操作数可以是或存储单元的内容目的操作数必须是功能传送时将源操作数符号扩展送入目的寄存器可以是位MOVSX3带零扩展传送指令无符号数的扩展MOVZX386及后继机型可用格式MOVZX DST, SRC执行操作本指令有两种格式REG1REG源操作数目的操作数MOVSX功能传送时将高位扩展为送入目的寄存器可以是位MOVSX例1MOVSX EAX 2MOVZX EAX 若执行前DATA =0FFE0H DATA 为字单元1EAX =0FFFFFFE0H 2EAX=0000FFE0H一般的双操作数指令源目的操作数的长度一致MOVZX MOVSX 指令的源操作数的长度一定要小于目的操作数的长度如MOVSX DXALMOVZX EBXAL 4堆栈操作指令堆栈PC 机的堆栈是在内存中开辟的一端固定一端活动的存储区采用的工作方式栈顶SP 或ESP 址由低注意 1.信息的存入和取出都是从栈顶开始中栈顶由指示当堆栈地址长度为位时堆栈操作使用SP 当堆栈地址长度为位时堆栈操作使用ESP为了将清楚堆栈操作指令我们分8086/8088803868086/8088 PUSH/POP进栈指令执行操作出栈指令执行操作例SP→SP→例SP→SP→ES)=2367H, (SP)=0100H,试画出堆栈的变化情况(SP)=100H12H12H例都是非法指令80386SP SP 2 ESP ESP 2 SP SP 4 ESP ESP 4 1616位位在实方式下803868086为编写80386及后继的程序可利用位通用寄存器可使用新增指令可采用新增的寻址方式但是段的最大长64KB 当存储单元的地址偏移超过64KB 时不会引起地址的反绕而导致段跨越异常在实方式下80386的兼容最大段为64称为位段在保护方式下段长可达4G 称为位段在实方式下运行的程序只能使用位段尽管在实方式下只能使用位段但可以使用位操作数也可以使用位形式表示的存储单元地址例MOV EAX关于实方式程序的几点说明为单位指令可以有四种格式不允许它使用立即数寻址方式指令允许三种格式能为字节类型5PUSHA/PU格式PUSHA286及后继PUSHAD386及后继执行操作PUSHA位通用寄存器依次入栈入栈次序为AX CX DX BX指令执行前的SP BP SI DISP SP-16PUSHAD位通用寄存器依次入栈入栈次序为EAX ECX EDX EBX指令执行前的ESP EBP ESI EDIESP ESP-326POPA/POP格式执行操作POPA位通用寄存器依次出栈出栈次序为DI SI BP SP BX DX CX AXSP SP+16POPAD位通用寄存器依次出栈出栈次序为EDI E SI EBP ESP EBX EDX ECX EAXESP ESP+32PUSHA POPA PUSHAD不影响标志位例例7交换交换指令执行操作OPR1OPR1OPR1例如XCHG EAX,EBX ; EAX 字AL 为要查找数据在表格2累加器专用传送指令EAX AX 传送信息IN OUT 输出程序设计中讲解换码指令格式执行操作累加器EAX AX AL例MOV BX, OFFSET TABLE ; (BX)=0040H长度不超过256)或EBX下标→(AL)3地址传送指令1LEA REG, SRC ;2LDS REG, SRC ;3LES REG, SRC ;4LFS REG, SRC ;5LGS REG, SRC ;6LSS REG, SRC ;把首地址偏移地址传送指令执行操作位有效地址位有效地址位有效地址截取低位有效地址零扩展后存入则MOV BX LEA BXBX =3412H BX=0100HBLOCK的区别假设0100H BLOCK =3412H 例值而不是该地址所在的存储单元的内容必须注意取地址到和寄存器指令执行操作或SREG ←位寄存器REG 不能是段R R LFS 段址偏移地址偏移地址段址例LDS SI, [10H]例LES DI, [BX]例TABLE DW 40H, 3000H , 2000HLSS ESP TABLE ;ESP=30000040H; (SS) =2000H4标志寄存器传送指令执行操作送标志寄存器指令执行操作(FLAGS标志进栈指令执行操作PUSHF: (SP)标志出栈指令执行操作LAHFSAHF例PUSHF TF=1TF15类型转换CBW AL的符号扩展到AH形成中的字CWD/CWDECWD AX的符号扩展到DX形成DX AX双字CWDE AX的符号扩展到EAX形成EAX双字CDQ EAX的符号扩展到EDX形成EDX EAXBSWAP 486及后继机型可用格式BSWAP R32 R32位寄存器操作将位寄存器的字节次序变反即14字节互换23字节互换指令合法的指令格式堆栈操作指令的指令与指令的区别掌握XCHG XLAT MOVSX MOVZX类型转换其余堆栈操作指令标志操作指令MOVSX作业。
80x86指令格式
字节类型 BYTE PTR [Reg]
字类型 WORD PTR [Reg]
双字类型 DWORD PTR [Reg]
(4) 段寄存器操作数(Seg)——为16位段寄存器,包括CS,DS,ES,SS,FS,GS。
3.2 80x86指令格式
3.2.180x86指令编码格式
指令编码格式是指指令的机器码表示格式,其最多可以由以下5部分组合构成:
一、前缀
指令前缀为地址长度前缀和操作数长度前缀。为了实现80x86系列的兼容性,在实方式和保护方式下均可执行16位或32位指令,在汇编程序汇编时,为某些指令附加指令前缀,可以将指令操作数或地址长度,由16位转移到32位,或由32位转移到16位。
(5) 立即数(imm)——只允许作为源操作数,其数据类型由目的操作数来限定。
(6) 注释——由分号(;)开始,用来对指令功能加以说明,使程序便于阅读,汇编程序对它不进行处理。
对于指令的分析,须注意以下4点:
·指令的功Leabharlann ; ·适用于指令的寻址方式;(Missed Code)
(2) 存储器操作数(Mem)——间接寻址时16位寻址寄存器包括BX,BP,SI,DI;32位寻址寄存器包括EAX,EBX,ECX,EDX,ESI,EDI,EBP。其中BX,SI,DI,EAX,EBX,ECX,EDX,ESI,EDI对应的缺省段寄存器为DS;BP,EBP对应的缺省段寄存器为SS。
例如 MOV Dest, Src
为数据传送指令,Src表示源操作数,Dest表示目的操作数,数据流动的方向是由Src源操作数传送到Dest目的操作数,操作数可以是寄存器或存储器操作数,有关操作数说明如下。
第4章(1)微机原理与接口技术(第三版)(王忠民)
第四章 80x86 指令系统—立即数寻址方式
MOV AX, 1234H
程序存储器
AH AL
12H 34H 操作码字节 指
34H 令
12H
码
第四章 80x86 指令系统—寄存器寻址方式
2)寄存器寻址方式 操作数存放在CPU的内部寄存器reg中:
8位寄存器r8: AH、AL、BH、BL、CH、CL、DH、DL 16位寄存器r16: AX、BX、CX、DX、SI、DI、BP、SP 4个段寄存器seg: CS、DS、SS、ES
微机原理与接口技术
西安邮电大学计算机学院 宁晓菊
第四章 80x86 指令系统(第一讲)
第一章 微型计算机系统导论(第一讲)
本章主要内容
1 80x86指令的寻址方式(3讲) 2 80x86指令系统(5讲)
第四章 80x86 指令系统(第一讲)
第一章 微型计算机系统导论(第一讲)
本讲主要内容
1 寻址方式概述 2 数据寻址方式之一:
80 21H
操作码
代
21H
码
AL
段
80
第四章 80x86 指令系统—I/O端口寻址方式
⑵ 间接端口寻址方式 MOV DX, 1234H OUT DX, AL
I/O接口 0001H
DX
12
34
0002H
……
AL
80 1234H
80
Thank you!
感谢
谢谢,精品课件 资料搜集
第四章 80x86 指令系统—立即数寻址方式
1)立即数寻址方式 指令中的操作数直接存放在机器代码中,紧跟在操
作码之后(操作数作为指令的一部分存放在操作码 之后的主存单元中)
80X86汇编语言程序设计教程+课后习题答案(清华大学版)
第二章答案Tarzan 版题2.1 8086/8088通用寄存器的通用性表现在何处?8个通用寄存器各自有何专门用途?哪些寄存器可作为存储器寻址方式的指针寄存器?答:8086/8088通用寄存器的通用性表现在:这些寄存器除了各自规定的专门用途外,他们均可以用于传送和暂存数据,可以保存算术逻辑运算中的操作数和运算结果;8个通用寄存器的专门用途如下:AX 字乘法,字除法,字I/OBX 存储器指针CX 串操作或循环控制中的计数器DX 字乘法,字除法,间接I/OSI 存储器指针(串操作中的源指针)DI 存储器指针(串操作中的目的指针)BP 存储器指针(存取堆栈的指针)SP 堆栈指针其中BX,SI,DI,BP可作为存储器寻址方式的指针寄存器题2.2 从程序员的角度看,8086/8088有多少个可访问的16位寄存器?有多少个可访问的8位寄存器?答:从程序员的角度看,8086/8088有14个可访问的16位寄存器;有8个可访问的8位寄存器;题2.3 寄存器AX与寄存器AH和AL的关系如何?请写出如下程序片段中每条指令执行后寄存器AX的内容:MOV AX,1234HMOV AL,98HMOV AH,76HADD AL,81HSUB AL,35HADD AL,AHADC AH,ALADD AX,0D2HSUB AX,0FFH答: MOV AX,1234H AX=1234HMOV AL,98H AX=1298HMOV AH,76H AX=7698HADD AL,81H AX=7619HSUB AL,35H AX=76E4HADD AL,AH AX=765AHADC AH,AL AX=D15AHADD AX,0D2H AX=D22CHSUB AX,0FFH AX=D12DH题2.4 8086/8088标志寄存器中定义了哪些标志?这些标志可分为哪两类?如何改变这些标志的状态?答: 8086/8088标志寄存器中定义了9个标志,如下:CF: Carry FlagZF: Zero FlagSF: Sign FlagOF: Overflow FlagPF: Parity FlagAF: Auxiliary Carry FlagDF: Direction FlagIF: Interrupt-enable FlagTF: Trap Flag这些标志可分为两类,分别为:1、运算结果标志;2、状态控制标志;采用指令SAHF可把AH中的指定位送至标志寄存器低8位SF、ZF、AF、PF、CF;采用CLC可清除CF,置CF到0采用STC可置CF到1采用CLD可置DF到0采用sTD可置DF到1采用CLI可置IF到0采用STI可置IF到1另外,在某些指令执行过程中会改变部分标志的状态;题2.5 请说说标志CF和标志OF的差异。
80X86汇编语言程序设计 第二章⑧.8086 8088指令系统(五)转移指令
80X86汇编语言程序设计第二章8086/8088寻址方式和指令系统-(五)转移指令1.无条件转移指令(没有条件碰到就转)(1)无条件段内直接转移指令格式:JMP 标号这条指令使控制无条件地转移到标号地址处。
例如:NEXT:MOV AX,CX……JMP NEXT ;转到NEXT处……JMP OVER ;转到OVER处……OVER: MOV AX,1无条件段内直接转移指令格式如下:由操作码和地址差值构成。
指令的操作码| 地址差地址差:是程序中该无条件转移指令的下一条指令的开始地址到转移目标地址(标号所指定的开始地址)的差值。
因为,在执行无条件段内转移指令时,实际的动作是把指令中的地址差加到指令指针IP上,使IP之内容为目标地址,从而达到转移的目的。
段内无条件直接转移指令中的地址差可用一个字节表示,也可用一个字表示。
如果地址差只要用一个字节表示,就称为短转移;如果地址差要用一个字表示,就称为近转移。
段内短跳转:(-128~127)JMP SHORT QUEST段内近跳转:(64KB)JMP NEAR PTR PROG(2)无条件段内间接转移指令格式:JMP OPRD这条指令使控制无条件地址转移到由操作数OPRD的内容给定的目标地址处。
操作数OPRD可以是通用寄存器,也可以是字存储单元。
(3)无条件段间直接转移指令格式:JMP FAR PTR 标号这条指令使控制无条件地转移到标号所对应的地址处。
标号前的符号“FAR PTR”向汇编程序说明这是段间转移。
例如:JMP FAR PTR EXITEXIT是定义在另一个代码段中的标号。
无条件段间直接转移指令的具体动作时把指令中包含的目标地址的段值和偏移分别置入CS和IP。
这种在指令中直接包含转移目标地址的转移方式称为绝对转移。
(4)无条件段间间接转移指令格式:JMP OPRD这条指令使控制无条件地转移到由操作数OPRD的内容给定的目标地址处。
操作数OPRD必须是双字存储单元。
资料:经典的80x86指令系统(指令大全)
80x86指令系统80x86的指令系统可以分为以下6组:数据传送类指令算术指令逻辑指令串处理指令控制转移指令处理机控制指令1、数据传送指令数据传送类指令负责把数据、地址或立即数传送到寄存器或存储单元中。
它又可以分为五种:1.1、通用数据传送指令MOV 传送MOVSX 带符号扩展传送MOVZX 带零扩展传送PUSH 进栈POP 出栈PUSHA 所有寄存器进栈POPA 所有寄存器出栈XCHG 交换(1)MOV传送指令格式为:MOV DST,SRC执行操作:(DST)<——(SRC)MOV指令可以在CPU内或CPU和存储器之间传送字或字节,MOV指令不影响标志位(2)MOVSX带符号扩展传送指令格式为:MOVSX DST,SRC执行操作:(DST)<——符号扩展(SRC)该指令的源操作数可以是8位或16位的寄存器或存储单元的内容,而目的操作数则必须是16位或32位寄存器,传送时把源操作数扩展送入目的寄存器。
MOVSX不影响标志位(3)MOVZX带零扩展传送指令格式为:MOVZX DST,SRC执行操作:(DST)<——零扩展(SRC)MOVSX和MOVZX指令与一般双操作数指令的差别是:一般双操作数指令的源操作数和目的操作数的长度是一致的,但MOVSX和MOVZX的源操作数长度一定要小于目的操作数长度(4)PUSH进栈指令格式为:PUSH SRC执行操作:16位指令:(SP)<——(SP)-2((SP)+1),(SP))<——(SRC)32位指令:(ESP)<——(ESP)-4((ESP)+3),(ESP)+2),(ESP)+1)(ESP))<——(SRC)(5)POP出栈指令格式为:POP DST16位指令:(DST)<——((SP)+1),(SP))(SP)<——(SP)+232位指令:(DST)<——((ESP)+3),(ESP)+2),(ESP)+1)(ESP))(ESP)<——(ESP)+4堆栈是一种“后进先出”方式工作的一个存储区,它必须存在于堆栈段中,因而其段地址存放于SS寄存器中。
x86是多少位
x86是多少位x86,亦称为x86架构或x86体系结构,是一种32位和64位微处理器架构。
它是Intel于1978年首次引入的一种基于CISC (Complex Instruction Set Computer,复杂指令集计算机)的处理器架构。
自那时以来,x86架构已经成为市场上最为广泛使用的计算机架构之一。
x86架构的第一个处理器是Intel 8086,它是一款16位处理器。
然而,由于对内存限制的需求以及市场的发展,Intel随后推出了Intel 80286(i286)处理器,后者是一款32位处理器,向后兼容8086指令集。
这是x86架构的第一个32位处理器,为今后的发展奠定了基础。
随着计算机技术的进步和市场需求的推动,x86架构建立了其领导地位。
Intel在后续的产品中引入了更先进的处理器,如80386(i386),80486(i486)和Pentium系列,将x86架构推向新的高度。
这些处理器通过增加处理器位宽度并改进指令集来提高计算能力和效率。
虽然32位x86架构在市场上非常成功,但随着技术的进步,对更高计算能力和内存访问的需求也越来越迫切。
为了应对这一需求,x86架构进一步演变为64位架构。
Intel在2003年推出了第一款x86 64位处理器,称为Intel Itanium。
紧接着,Intel又发布了x86架构的64位版本,称为Intel EM64T。
AMD还引入了自己的64位架构,称为AMD64或x86-64。
这些64位处理器不仅可以兼容运行32位操作系统和应用程序,还可以运行64位操作系统和应用程序,提供更高的内存寻址能力。
x86架构的位数指的是处理器的寻址能力和寄存器的位宽度。
在32位x86架构中,处理器能够寻址32位内存地址,这意味着它最多可以寻址2^32(大约4GB)的内存。
而在64位x86架构中,处理器能够寻址64位内存地址,最多可以寻址2^64(约16EB)的内存,实现了更高的内存寻址能力。
汇编语言第2章80x86计算机组织
控制标志位
• 控制标志位 :DF 方向标志,用于串处理指令处理
▪ DF位为1时,每次操作后使变址寄存器SI和 DI减量,使串处理从高地址向低地址方向处 理:
▪ 当DF位为0时,则使SI和DI增量,使串处理 从低地址向高地址方向处理:
系统标志位
• IF:中断标志。 当IF=1时,允许中断; IF=0时关闭中断
数据的宽度 • 地址总线宽度:用以确定可访问的存储器的最
大范围
地址总线宽度
• 10位:210=1024单元,1K • 20位:220=1024* 210单元=1024K,1M • 24位:224=16*1M,16M • 30位:230=1024M,1G • 32位:232=4G,即4GB
二、一些名词术语(2)
• TF:陷井标志(跟踪标志)。用于单步方式操作 • IOPL:I/O特权级。控制对I/O地址空间访问
段寄存器
• 8086/8088、80286:四个段寄存器 ▪ 代码段CS,数据段DS,堆栈段SS,附加段ES
• 80386及后继机型:六个段寄存器 ▪ 代码段CS,数据段DS,堆栈段SS,附加段ES、 FS、GS---都是16位
• ZF:零标志。运算结果为0,置1;否则置0。 • CF:进位标志。记录从最高有效位产生的进位值。
最高有效位有进位时置1,否则置0。 • AF:辅助进位标志。记录运算时第3位产生的进位
值。如第3位有进位时置1,否则置0。 • PF:奇偶标志。当结果操作数中1的个数为偶数时置
1,否则置0。
标志符号 举例
段中的某一存储单元的地址 4. SI、DI一般与DS联用:
在串处理指令中,SI和DS联用,DI和ES联用
8086系统的堆栈
• 是存储器中的特殊区域 – 在堆栈段内,“FILO” – SP始终指向栈顶,总是字操作,指示栈顶的 偏移地址; – BP可作为堆栈区中的一个基地址以便访问 堆栈中的其他信息
80x86汇编语言程序设计
80x86汇编语言程序设计80x86汇编语言程序设计是一门专门研究如何使用汇编语言在80x86架构的计算机上编写程序的学科。
80x86架构是Intel公司开发的一种微处理器架构,它包括了8086、80286、80386、80486等处理器,以及后来的Pentium系列。
汇编语言是一种低级语言,它与机器语言非常接近,通常用于编写性能要求极高的程序或者进行底层系统开发。
汇编语言基础汇编语言的指令与机器指令一一对应,但使用助记符来代替二进制代码,使得程序更加易于编写和理解。
汇编语言的基本元素包括指令、寄存器、内存地址和立即数。
- 指令:是汇编语言的基本操作单位,用于执行特定的操作,如数据传输、算术运算、逻辑运算等。
- 寄存器:是CPU内部的存储单元,用于快速存取数据。
80x86架构有多个寄存器,包括通用寄存器、段寄存器、指令指针寄存器等。
- 内存地址:是存储在RAM中的数据的位置,汇编语言可以通过内存地址访问和操作数据。
- 立即数:是指令中直接给出的数值,不需要通过寄存器或内存地址访问。
汇编语言指令80x86汇编语言提供了丰富的指令集,用于执行各种操作。
以下是一些基本的指令类型:- 数据传输指令:如MOV(移动数据)、PUSH(将数据压入堆栈)、POP(从堆栈中弹出数据)等。
- 算术指令:如ADD(加法)、SUB(减法)、MUL(乘法)、DIV(除法)等。
- 逻辑指令:如AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR (逻辑异或)等。
- 控制流指令:如JMP(无条件跳转)、JE(等于时跳转)、JNE(不等于时跳转)、LOOP(循环)等。
汇编程序结构一个典型的汇编程序包括以下部分:1. 程序声明:声明程序的名称和起始点。
2. 数据定义:定义程序中使用的数据和常量。
3. 代码段:包含程序的指令和逻辑。
4. 堆栈段:用于存储临时数据和调用函数时的参数。
5. 常量段:定义程序中使用的常量。
6. 外部引用:引用其他程序或库中的代码和数据。
第二章 80x86计算机组织
80x86汇编语言程序设计
1. 状态标志取值的一般规则
ZF(Zero Flag):零标志。若运算结果为0,则ZF = 1,否则 ZF = 0。
SF(Sign Flag):符号标志。若运算结果为负数,则SF = 1, 否则SF = 0。 CF(Carry Flag):进位标志。若加法时结果最高位向前有进 位或减法时最高位向前有借位,则CF = 1,否则CF = 0。 OF(Overflow Flag):溢出标志。若带符号数的运算结果超 出了补码表示的范围,则OF = 1,否则OF = 0。 AF(Auxiliary Carry Flag):辅助进位标志。若加法时结果 低4位向前有进位或减法时结果低4位向前有借位,则AF = 1,否 则AF = 0。 PF(Parity Flag):奇偶标志。若结果最低字节中1的个数为 偶数,则PF = 1,否则PF = 0。
80x86程序可以存取的最小数据单位是字节。例如,若要读取的位 数不足8位,则只能先读出一个完整字节,再屏蔽掉其它位。
字的存储采取“低字节在低地址,高字节在高地址,字的地址由低 地址表示”的小端方式,双字也类似。
要正确理解内存单元的地址和值,地址表示位置,值是相应位置处 的内容。同一地址既可以看作字节单元地址,也可以看作字甚至双字 单元地址,取决于具体的使用方式。
2013-1-20
80x86汇编语言程序设计
80x86 CPU有3种工作模式:实模式、保护模式和虚拟8086模 式。 在实模式下,段地址和偏移地址均为16位。20位物理地址由 16位段地址左移4位加16位偏移地址得到,只能寻址1MB的内存 空间,且每段≤64KB。 在实模式下,32位CPU下的程序可以使用32位寄存器和32位操 作数,但采用32位寄存器表示偏移地址时,只使用低16位,高 16位为0。CS:IP总是指向下一条要执行的指令,EIP的高16位为 0。SS:SP指向堆栈段的栈顶,ESP的高16位为0。 状态标志是CPU进行条件判断和控制程序执行流程的依据,最 常用的是4个:CF、OF、SF和ZF。其中,CF表示无符号溢出,OF 表示带符号溢出。
80X86寄存器及存储器结构介绍
二、段寄存器
CS:代码段寄存器
SS:堆栈段寄存器 DS:数据段寄存器 ES:附加段寄存器 IP:指令指针寄存器 与CS一起指向程序中下一条要执行的指令 FLAG:标志寄存器
三、控制寄存器
16位的寄存器,其中9个位是标志位,代表了系统运行 的状态。
80X86寄存器
湖南大器,也称栈顶指针。与堆栈段寄存器SS一起 寻址栈顶单元。 BP:基址指示器。常与SS一起寻址堆栈中的非栈顶单元。
3、变址寄存器
SI:源变址寄存器 DI:目的变址寄存器
它们常用于串操作,当然也可存放数据。
80X86寄存器
湖南大学 赵欢 hzhao@ 3
8088存储器结构
湖南大学
赵欢 hzhao@
7
DF、IF、TF不受算逻指令影响,有专门的方式置/复位;
DF:方向标志 DF=1,串操作为自动地址减量方式 =0,串操作为自动地址增量方式 IF:中断标志 IF=1,开中断;IF=0,关中断 TF:追踪标志 DF=1,CPU为单步执行方式;DF=0,CPU为连续执行方式
湖南大学 赵欢 hzhao@ 5
80X86寄存器
8088有20根地址线,8根数据线。 基本内存配置 具有:220=1M个内存单元 每个单元:8 bits
与地址有关的寄存器CS、SS、DS、ES、IP、SP
BX、BP、SI、DI均是16位的。
16位的寻址能力如何访问1MB的空间?
8088存储器结构
湖南大学 赵欢 hzhao@ 6
FLAG寄存器的各个位
15 12 11 10 9 IF 8 7 6 ZF 5 4 AF 3 2 PF 1 0 CF OF DF TF SF
IBM—PC(80x86)汇编语言与接口技术-第2章 80x86计算机组织
• 80386是1985年研制出的一个32位微处理器, 内部及外部数据总线均为32位,地址线也为32 位,因此它可处理4G(232)字节的物理存储 空间。
• 1989年Intel公司又研制出新一代的微处理器 80486,80486芯片内除了有一个与80386相同 结构的主处理器外,还集成了一个浮点处理部 件FPU以及一个8K字节的高速缓冲存储器 (cache),使80486的计算速度和总体性能比 80386有了明显的提高。
• Intel公司在1982年推出了80286微处理器,它仍 然是16位结构。80286的内部及外部数据总线都 是16位的,但它的地址线是24位的,可寻址16M 字节的存储空间。
80286有两种工作方式,即实模式和保护模式: 实模式与8086工作方式相同,但速度比8086快。
保护模式除了仍具有16M字节的存储器物理地址空 间外,她还能为每个任务提供1G字节的虚拟存储 器地址空间。保护方式把操作系统及各任务所分配 到的地址空间隔离开,避免程序之间的相互干扰, 保证系统在多任务环境下正常工作。
• 8086是1978年Intel公司推出的16位微处理器。
(1)8086有16位数据总线,处理器与外部传送数据 时,一次可传送16位二进制数。
(2)8086有20位地址总线,寻址空间提高到1M字节。
(3)8086采用了流水线技术,可以实现处理器的内 部操作与存储器或I/O接口之间的数据传送操作重叠 进行,从而提高了处理器的性能。
2.2 基于微处理器的 计算机系统的构成
硬件:
中央处理机 CPU
总线控制 逻辑 系 统 总 线
存储器
接口
...
接口
大容量 存储器
...
I/O设备
I/O子系统
(完整word)80x86指令详解
80x86指令系统,指令按功能可分为以下七个部分.(1) 数据传送指令.(2) 算术运算指令。
(3) 逻辑运算指令。
(4)串操作指令。
(5)控制转移指令。
(6)处理器控制指令。
(7)保护方式指令.1、数据传送指令数据传送指令包括:通用数据传送指令、地址传送指令、标志寄存器传送指令、符号扩展指令、扩展传送指令等.一、通用数据传送指令1 传送指令传送指令是使用最频繁的指令,格式:MOV DEST,SRC功能:把一个字节,字或双字从源操作数SRC传送至目的操作数DEST.传送指令允许的数据流方向见图3 11。
图 3.11 传送指令数据流由上图可知,数据允许流动方向为:通用寄存器之间、通用寄存器和存储器之间、通用寄存器和段寄存器之间、段寄存器和存储器之间,另外还允许立即数传送至通用寄存器或存储器。
但在上述传送过程中,段寄存器CS的值不能用传送指令改变。
例 3.12CPU内部寄存器之间的数据传送。
MOV AL,DH ;AL←DH(8位)MOV DS,AX ;DS←AX(16位)MOV EAX,ESI ;EAX←ESI(32位)例 3.13CPU内部寄存器和存储器之间的数据传送。
MOV [BX],AX ;间接寻址(16位)MOV EAX,[EBX+ESI];基址变址寻址(32位)MOV AL,BLOCK ;BLOCK为变量名,直接寻址(8位)例 3。
14立即数送通用寄存器、存储器。
MOV EAX,12345678H ;EAX←12345678H(32位)MOV [BX],12H ;间接寻址(8位)MOV AX,1234H;AX←1234H(16位)使用该指令应注意以下问题:·源和目的操作数不允许同时为存储器操作数;·源和目的操作数数据类型必须一致;·源和目的操作数不允许同时为段寄存器;·目的操作数不允许为CS和立即数;·当源操作数为立即数时,目的操作数不允许为段寄存器;·传送操作不影响标志位。
80x86微处理器习题及答案
80x86微处理器习题及答案 16.8086/8088的主要操作有: (1)系统的复位和启动操作;
(2)总线操作;
(3)中断操作; (4)最小模式下的总线保持;
(5)最大模式下的总线请求与保持。
总线操作又分为最小模式下的总线读操作、最小模 式下的总线写操作、最大模式下的总线读操作和最大模 式下的总线写操作。
对基址变址寻址方式中,隐含的数据段是DS。
BX:在寄存器间接寻址、寄存器相对寻址、基址变址寻址和相 BP:在寄存器间接寻址、寄存器相对寻址、基址变址寻址和相 对基址变址寻址方式中,隐含的数据段是SS。
SI:在寄存器间接寻址、寄存器相对寻址、基址变址寻址和相
对基址变址寻址方式中,隐含的数据段是DS。在字符串操作 时,SI作为源变址,隐含的数据段是DS。
(4)往指令队列中装入指令时,是按照指令在存储器中的排列 顺序进行的。但执行转移、调用和返回指令时,下一条要 执行的指令就不是存储器中紧接着的那条指令了。遇到这 种情况,BIU先把指令队列中原内容清零,再从要执行的那 条指令开始装入。
80x86微处理器习题及答案
9.
指示偏移地址的寄存器有BX,BP,SI,DI,SP,1P。
中不使用。 10. (1)→(D);(2)→(G);(3)→(J); (4)→(A);(5)→(H);(6)→(B); (7)→(F);(8)→(C);(9)→(E);
(10)→(1)。
80x86微处理器习题及答案
12.为了取指令或传送数据,就需要BIU执行一个总线周期。一
个基本的总线周期由四个时钟周期组成,习惯上将它们称为 四个T状态,即T1状态、T2状态、T3状态和T4状态。有时会 出现等待状态Tw和空闲状态Ti。在各个T状态中,CPU完成的 工作分别为: (1)在T1状态,CPU往地址/数据复用总线上发地址信息。 (2)在T2状态,从地址/数据总线上撤销地址信息,并使地址 /数据总线的低16位成为高阻态,为传送数据信息做准备。
80X86常用汇编指令集
80X86常用汇编指令集ZZ作者 : 赵振东ZZD学习汇编语言,最关键的就在于汇编指令集的掌握以及计算机工作方式的理解,以下是80X86汇编过程中经常用到的一些汇编指令。
从功能分类上来说,一共可分为一、数据传送指令:MOV、XCHG、LEA、LDS、LES、PUSH、POP、PUSHF、POPF、CBW、CWD、CWDE。
二、算术指令:ADD、ADC、INC、SUB、SBB、DEC、CMP、MUL、DIV、DAA、DAS、AAA、AAS。
三、逻辑指令:AND、OR、XOR、NOT、TEST、SHL、SAL、SHR、SAR、RCL、RCR、ROL、ROR。
四、控制转移指令:JMP、Jcc、JCXZ、LOOP、LOOPZ、LOOPNZ、LOOPNE、CALL、RET、INT。
五、串操作指令:MOVS、LODS、STOS、CMPS、SCAS。
六、标志处理指令:CLC、STC、CLD、STD。
七、32位CPU新增指令(后续补充并完善)除上述的一些指令外,还有许多32位80X86CPU新增指令,这些指令有时会简化程序设计,不过由于我也是刚刚学习汇编,这些都是从书上看到的,所以很多还不是十分了解,我写这些的目的仅仅是想让自己能更好的去记住这些指令的作用和用法,同事也希望和我一样刚入门的朋友能够多了解一些,并没有其他目的,所有的示例也并没有经过实际的代码测试,所以希望各位朋友,不管你喜欢不喜欢,反对不反对,请文明发言,谢谢!------------------------------------------------数据传送指令开始-------------------------------------------------------1、MOV(传送)指令写法:MOV target,source功能描述:将源操作数source的值复制到target中去,source值不变注意事项:1)target不能是CS(代码段寄存器),我的理解是代码段不可写,只可读,所以相应这地方也不能对CS执行复制操作。
第2章 80X86汇编语言与汇编程序(4)—串操作与程序控制指令
DI,200H CX,128 AX,AX STOSW
当然也可以用字节填充 可以使用重复前缀。 当寄存器AL、AX中的数不变 BBB: CLD LEA DI,0500H 时,使用重复前缀,则是对 某一RAM区域进行填充。 MOV CX,256 例如上电复位后,对某一块内 XOR AL,AL 存区域全部填充0 REP STOSB
GLUT_C 2013-08 25
④ 段间直接转移
格式: JMP FAR PTR dst 功能:用dst给出的段内偏移量代替IP,用dst的段地址代替 CS的内容,转移到新的CS: 偏移地址去执行下一条指令。 注意:在汇编语言程序设计中,dst通常使用符号地址。
例如:
MOV JMP AX, [SI] FAR PTR ABCD
GLUT_C
2013-08
8
例:比较1000:0e00H与1000:0400H连续8字节是否相等,只要有 一个不相同的字节,则设置AL=0A5H表示两个字符串不想等,否 则赋值AL=00H。
CMP_S: MOV MOV MOV MOV MOV CLD MOV REPZ JNZ MOV JMP DONE: MOV CMP_END: RET
8086指令系统(续)
GLUT_C
2013-08
1
2.3.5
串操作指令
串操作指令在教材P.128 字符串传送指令 字符串比较指令 字符串检索指令 取字符串指令 存字符串指令
GLUT_C
2013-08
2
1.字符串传送指令 字符串传送指令MOVSB/MOVSW 格式: MOVSB ;用于字节传送 MOVSW ;用于字传送。 特点: ( 1 ) MOVSB 、 MOVSW 指令,源数据串的默认段 基址 DS ,有效地址为 SI ,目的串段基址 ES ,有效 地址DI。 (2)指令前面常加重复前缀REP,重复执行n次。 (3)重复执行次数 由CX指定 (4)每次传送,DI,SI自动修改(字节传送±1,字 传送±2),加减由方向控制为DF确定。
x86电脑是什么意思
x86电脑是什么意思在重新安装系统的时候,都会看到x86的名称,x86是多少什么意思呢?x86和x64又分别指的是什么呢?现在店铺就来跟大家介绍下x86是什么意思。
首先来看看x86和x64分别指的是什么?x64指的是CPU是64位版本的。
x86指的是CPU是32位版本的。
那么x86是什么意思?x86或80x86是属于英特尔Intel率先开发制造的一种微处理器体系结构的泛称。
对于该系列较早期的处理器名称是以数字来继续宁表示,并以这个“86”作为结尾,其中包括Intel 8086、80186、80286、80386以及80486,所以其架构被称为“x86”。
因为数字并不能作为注册商标,所以Intel及其竞争者均在新一代处理器使用可注册的名称,如这个Pentium。
到了现在Intel把x86-32称为IA-32,全名方面为“Intel Architecture, 32-bit”。
假如大家的CPU是属于32位的,只能安装32位的系统。
反之64位则可以安装32位和64位系统。
并且32位系统是只能支持4G 以下内存。
32位只支持2GB的内存条,64就可以4GB++了在64位系统下,为了更好的兼容32位程序,在安装一些32位程序(注意某些程序他就是32位的),会默认扔到program files(x86)这个文件夹下,而一些64位的程序,或程序本身没有位数区别的,会默认扔到program files 这个文件夹下,他两下,都有一些与程序使用相关的程序简单的说x86代表32位操作系统 x64代表64位操作系统。
如果你的CPU是双核以上,那肯定支持64位操作系统了。
如果你的电脑内存大于4G,那就要用64位的系统了,因为32位的Windows 7也好,Vista也好,最大都只支持3.25G的内存。
而64位的windows 7最大将支持128G的内存。
64bit计算主要有两大优点:可以进行更大范围的整数运算;可以支持更大的内存。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理
河北经贸大学
FLAGS定义 FLAGS定义
15 11 10 9 8 7 6 4 AF 2 PF 0 CF
OF DF IF TF SF ZF
控控控控位:TF、IF、DF 状状控控位:CF、PF、AF、ZF、SF、OF
CPU初始化后, FLAGS寄存器 的值位0002H。
微机原理
河北经贸大学
微机原理
河北经贸大学
指令队列的引入使得EU和BIU可并行工作,即BIU在读 指令时,并不影响EU单元执行指令,EU单元可以连续不断 地直接从指令队列中取到要执行的指令代码,从而减少了 CPU为取指令而等待的时间,提高了CPU的利用率,加快了 整机的运行速度。
微机原理
河北经贸大学
执行单元EU 执行单元EU
微机原理
河北经贸大学
指令指针寄存器
指令指针寄存器IP用来存放下一条要读取的指令在代码段中的 偏移地址。IP在程序运行中能自动加1修正。 由于CS和IP的内容决定了程序的执行顺序,因此程序员不能直 接用赋值指令对其内容进行修改。 有些指令能使IP和CS的值改变。
微机原理
河北经贸大学
指令队列缓冲器
8086的指令队列有6个字节,8088的指令队列有4个字节。 对8086而言,当指令队列出现2个空字节,对8088而言,指令队 列出现1个空字节时,BIU就自动执行一次取指令周期,将下一条 要执行的指令从内存单元读入指令队列。 它们采用“先进先出”原则,按顺序存放,并按顺序取到EU中去 执行。
微机原理
河北经贸大学
2.1.2 8086性能的提高
用流水线提高并行性
提高主频,减少时钟周期时间。 缩短指令执行的周期数。 8086中,取指令和执行指令重叠,大部分指令需 要4个时钟周期。 80386,采用6个操作并行的功能部件,一条指令 只需2个时钟周期。
80486中,采用5级流水线,最多有5条指令同时执行 。每个时钟周期都能执行一条指令。
微机原理
河北经贸大学
段寄存器
8088采用分段管理模式,每个段的首地址放在段寄存器中。由 段寄存器的值和指令提供的偏移地址来形成物理地址。 将指令代码和数据分别存储在代码段、数据段、堆栈段、附加 数据段中,这些段的段地址分别由段寄存器CS、DS、SS、ES提 供,而代码或数据在段内的偏移地址则由有关寄存器或立即数 给出。
微机原理
河北经贸大学
总线接口单元内有4个16位段寄存器:CS(Code Segment)、 DS(Data Segment)、SS(Stack Segment)和ES(Extra Segment)。 一个16位的指令指针寄存器IP(Instruction Pointer)。 一个20位地址加法器,6字节指令队列缓冲器,一个与EU通讯 的内部寄存器以及总线控制电路等。
微机原理
河北经贸大学
存储器管理 80386可寻址4G空间,但实际物理内存小 于4G。 为了满足大程序需要大空间的要求,操作 系统支持虚拟存储器管理,提供表、页等管 理。
微机原理
河北经贸大学
浮点支持
工程应用、图形处理、科学计算等要求浮点支持(实数运算)。 因此,自80486芯片开始,在x86系列微处理器中集成了x87 (及其增强)浮点单元。
微机原理
河北经贸大学
地址指针寄存器SP SP、 2. 地址指针寄存器SP、BP SP(Stack Pointer)称为栈顶指针寄存器。在使用堆栈操作指 令对堆栈进行操作时,每执行一次进栈或出栈操作,系统会 自动将SP的内容减2或加2,以使其始终指向栈顶。 BP(Base Pointer)称为基址寄存器。作为通用寄存器,它可以 用来存放数据,但更经常更重要的用途是存放操作数在堆栈 段内的偏移地址。
MMX(多媒体扩展)技术 (多媒体扩展)
为支持多媒体技术的应用,如音乐合成、语音合成。语音识别、 音频和视频压缩(编码)和解压缩(译码)、2D 和 3D 图形 (包括 3D 结构映像)和流视频等等。x86系列处理器中增加 MMX技术及相应的指令
微机原理
河北经贸大学
流SIMD扩展 扩展 自Pentium III处理器开始,在x86系列微 处理器中引进了流SIMD(单指令多数据) 扩展(SSE)技术。SSE扩展把由Intel MMX引进的SIMD执行模式扩展为新的128 位XMM寄存器和能在包装的单精度浮点数 上执行SIMD操作。
15 AH BH CH DH 15 SP BP SI DI 15 CS DS SS ES 15 IP FLAGS 0 0 8 7 AL BL CL DL 0 0 AX 累附段 BX 基逻段段段 CX 计数段段段 DX 数数段段段
数数段段段
通通段段段 堆堆堆堆段段段 基逻段段段 源源逻段段段 目目源逻段段段 堆堆段段段
SS(Stack Segment)称为堆栈段寄存器,用来存放程 序当前所使用的堆栈段的段地址。 ES(Extra Segment)称为附加数据段寄存器,用来存 放程序当前使用的附加数据段的段地址。
微机原理
河北经贸大学
控制寄存器
IP(Instruction Pointer)称为指令指针寄存器,用来存放下一条 要读取的指令在代码段内的偏移地址。用户程序不能直接访问 IP。 FLAGS称为标志寄存器,它是一个16位的寄存器,但只用了其 中9位,这9位包括6个状态标志位,3个控制标志位。
段寄存器
为了对1M个存储单元进行管理,8086/8088对存储器进行分段管 理,即将程序代码或数据分别放在代码段、数据段、堆栈段或附 加数据段中,每个段最多可达64K个存储单元。 段地址分别放在对应的段寄存器中,代码或数据在段内的偏移地 址由有关寄存器或立即数给出。
微机原理
河北经贸大学
CS(Code Segment)称为代码段寄存器,用来存储程序当 前使用的代码段的段地址。 DS(Data Segment)称为数据段寄存器,用来存放程序当 前使用的数据段的段地址。
源逻段段段
代代代段段段 数数代段段段 堆堆代段段段 附附数数代段段段 代段段段
堆指堆堆段段段 状状控控段段段
控控段段段
寄存器是CPU内部用来存储信息的记忆单元, 它有暂存信息的作用,可以减少指令执行过 程中到内促或外设取操作数所用的时间,提 高了程序执行的速度。
微机原理
河北经贸大学
通用寄存器
1.数据寄存器AX、BX、CX、DX 数据寄存器AX、BX、CX、 AX 数据寄存器一般用于存放参与运算的操作数或运算结果。 每个数据寄存器都是16位的,但又可将高、低8位分别作为两个 独立的8位寄存器来用。 高8位分别记作AH、BH、CH、DH,低8位分别记作AL,BL, CL,DL。例如AX可当作两个8位寄存器AH、AL使用。
功能:负责执行指令。 1.16位算术逻辑单元(ALU):用于进行算术和逻辑运算。 2.16位标志寄存器FLAGS:用来存放CPU运算的状态特征和 控制标志。 3.数据暂存寄存器:协助ALU完成运算,暂存参加运算的数 据。
微机原理
河北经贸大学
4. 通用寄存器:包括4个16位数据寄存器AX、BX、CX、 DX和4个16位指针与变址寄存器SP、BP与SI、DI。 5. EU控制电路:它是控制、定时与状态逻辑电路,接收从 BIU中指令队列取来的指令,经过指令译码形成各种定时控制信 号,对EU的各个部件实现特定的定时操作。
总线接口单元BIU 总线接口单元
BIU的功能是负责完成CPU与存储器或I/O设备之间的数据传送。 ① 指令队列出现空字节时,从内存取出后续指令。BIU取指 令时,并不影响EU的执行,两者并行工作。 ② EU需要从内存或外设端口读取操作数时,根据EU给出的 地址从内存或外设端口读取数据供EU使用 。 ③ EU的运算结果、数据或控制命令等由BIU送往指定的单元。
微机原理
河北经贸大学
特定用途
AX(Accumulator)称为累加器。用于算术与逻辑运算、串操作 指令、I/O指令。 BX(Base)称为基址寄存器。BX用来存放操作数在内存中数据段 内的偏移地址。
微机原理
河北经贸大学
CX(Counter)称为计数器。在循环操作时放循环次数,在移 位时存放移位次数、在串操作时放操作次数。 DX(Data)称为数据寄存器。在寄存器间接寻址的I/O指令中存 放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放 一个双字长操作数,其中DX存放高16位数,AX放低16位。
执行环境包括:
寄存器组织: 通用数据寄存器、段寄存 器、标志寄存器和指令指针寄存器等。 内存组织(地址空间)、 I/O端口组织
以上内容为汇编语言程序员所必须了解的IA32结构微处理器的执行环境
微机原理
河北经贸大学
微机硬件: 微机硬件: 汇编语言
寄存器 存储器 I/O组织 组织 堆栈
汇编语言程序员
8086/8088寄存器结构 8086/8088寄存器结构
系统程式和用户程式并没有区别对待,而且每一个指针都是指向实际 的物理地址。 用户程式的一个指针假如指向了系统程式区域或其他用户程式区域, 并修改了内容,那么对于这个被修改的系统程式或用户程式,其后果 就很可能是灾难性的。
保护模式:在保护模式中,提供了硬件对多任务的支持;
物理内存地址也不能直接被程序访问,程序内部的地址(虚拟地址) 要由操作系统转化为物理地址去访问, 进程根本没有办法访问不属于自己的物理内存区域,甚至在自己的 虚拟地址范围内也不是能够任意访问的,因为有一些虚拟区域已被放 进一些公共系统运行库。这些区域也不能随便修改,否则Windows 中会出现非法内存访问对话框。
微机原理
河北经贸大学
通用寄存器的特定用法
寄存 器 AX AL AH BX CX
微机原理
操作 字乘,字除,字I/O
寄存器 CL
操作 变量移位,循 环移位 字乘,字除, 间接I/O 堆栈操作 数据串操作指 令 数据串操作指 令