版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、(2015秋季学期)第第2页页第第1章章第第2章章第第3章章第第4章章第第5章章第第6章章第第8章章第第9章章v二进制和十六进制运算二进制和十六进制运算v数的补码表示数的补码表示v补码的加法和减法补码的加法和减法v基本逻辑运算:基本逻辑运算:ANDAND、OROR、NOTNOT、XORXORv常用字符表示法常用字符表示法第第3页页4X的真值符号位数值位不变10X的原码符号位不变,数值位时)1(符号位为1变反加时)0不变(符号位为X的补码X的反码符号位不变,数值位时)变反(符号位为时)不变(符号位为105v逻辑运算逻辑运算AND OR NOT XORAND OR NOT XORv操作方式:按二进
2、制的位运算操作方式:按二进制的位运算例:例:(7) 10 XOR (5) 10 =(2)106 6参见p.1178v把二进制数从右到把二进制数从右到左左4 4位一撇位一撇1 1位位HexHex10101010112 A B001A2B0001 1010 0010 1011l 十六进制数的每1位对应4位二进制数9v(100)H n(1 0000 0000)Bn(256)Dn(400)Ov(75)HBin1110101BDec71615160117OctHBO165OB: 1111 1111D: 128,64,32,16,8,4,2,1127v中央处理机中央处理机CPUCPU的组成的组成v80 x
3、8680 x86寄存器组寄存器组v存储单元地址和内容存储单元地址和内容v实模式存储器寻址实模式存储器寻址v保护模式寄存器寻址保护模式寄存器寻址第第10页页11 CPU CPU由三部分组成由三部分组成: : l 算术逻辑部件算术逻辑部件ALUALU:用来进行算术和逻辑运算。用来进行算术和逻辑运算。l 控制逻辑控制逻辑:负责对全机的控制工作。:负责对全机的控制工作。包括:取指、译指、取操作数,发执行指令、包括:取指、译指、取操作数,发执行指令、结果存入存储器、对总线和结果存入存储器、对总线和I/OI/O传送的控制等。传送的控制等。l 寄存器:寄存器:相当于运算器中的一个存储单元相当于运算器中的一个
4、存储单元n可见可见寄存器寄存器n不不可见可见寄存器寄存器参见p.2012v寄存器:寄存器:可见寄存器、不可见寄存器可见寄存器、不可见寄存器v可见寄存器可见寄存器:l通用寄存器通用寄存器l专用寄存器专用寄存器l段寄存器段寄存器1313参见p.21141415vAXAX:AccumulatorAccumulator,累加器,累加器n算术运算主要寄存器;在在I/OI/O时用时用AXAX与外部设备传送信息与外部设备传送信息vBXBX:BaseBasen在在计算存储器地址时,作时,作16vCXCX:CountCount,计数器,计数器n所有寄存器中,只有此寄存器不能用作间接寻址!vDXDX:DataDa
5、taAXDXn在在I/OI/O操作时,操作时,DXDX可用来存放可用来存放I/OI/O的端口地址。的端口地址。n和组合存放双字长数,存放高字节;17vSPSP:堆栈指针寄存器堆栈指针寄存器n指示栈顶的偏移地址vBPBP:基址指针寄存器基址指针寄存器n作为堆栈区中的基地址以便访问的其他信息n上海大学:上海大学:A A楼、计算机大楼、材料大楼楼、计算机大楼、材料大楼 etc.etc.vDIDI:目的目的变址寄存器变址寄存器 vSISI:源变址寄存器源变址寄存器Stack Point Stack Point Base Base Point Point Destination IndexDestina
6、tion IndexSource Index Source Index 这些只能以16位为单位使用,存放操作数。18v在存储器在存储器中的特殊区域中的特殊区域nSP始终指向栈顶,总是n指示栈顶的指示栈顶的;nBPBP可作为堆栈区中的一个可作为堆栈区中的一个地址以便访问堆栈中的其地址以便访问堆栈中的其他信息他信息n堆栈地址由高向低增长(象一个倒放的有底的桶)(象一个倒放的有底的桶)n存放断点或暂存数据存放断点或暂存数据字操作19F0 DE BC 9A 78 56 34 12 0060 0059 005d 低 地 址 高 地 址 栈 顶 SP 栈 底 BP 堆栈地址由高向低增长堆栈地址由高向低增长
7、20l 在运算过程中在运算过程中存放存放操作数操作数l 在在内寻址时内寻址时提供提供偏移地址偏移地址l SPSP、BPBP都可以都可以与与寄存器联用寄存器联用来来确定确定中的中的某单元的地址某单元的地址l 通常通常SISI、DIDI与与联用联用l用来确定数据中某一存储单元的地址;用来确定数据中某一存储单元的地址;l具备自动增减量的功能;具备自动增减量的功能;l 在串处理指令中,在串处理指令中,SISI和和DIDI作为隐含的变址寄存器作为隐含的变址寄存器lSISI和和DSDS联用:达到在数据段中寻址的目的联用:达到在数据段中寻址的目的lDIDI和和ESES联用:达到在附加段中寻址的目的联用:达到
8、在附加段中寻址的目的堆栈段堆栈段21v 8086/80888086/8088、8028680286:nIPIP、SPSP、FLAGS16FLAGS16位位v IPIP:指令指针寄存器指令指针寄存器 n存放存放代码段代码段中的中的偏移地址偏移地址,与,与CSCS寄存器联用确定下一条指令寄存器联用确定下一条指令的的物理地址物理地址,指向下一条指令的,指向下一条指令的首地址首地址。存储器存储器IP地址信息控制器控制器需要执行的指令下一条指令首地址123422l SP:堆栈指针寄存器n 存放栈顶偏移地址,与堆栈段寄存器()联用确定堆栈段中的栈顶地址。l FLAGS:标志寄存器l 也称程序状态字寄存器,
9、Program Status Word, PSW 。n 存放条件码标志、控制标志、系统标志SS23v条件码标志:条件码标志:、v控制标志位控制标志位:( (irection irection lag)lag)v系统标志系统标志位:位:nTFTF( (T Traprap F Flag)lag)、IFIF( (I Interruptnterrupt F Flag)lag)nIOPLIOPL( (I I/ /O PO Privilege rivilege L Levelevel): ):(8028680286) NT IFTF IOPL 8X86的标志寄存器:15151414131312121111
10、10109 98 87 76 65 54 43 32 21 10 024v控制标志位控制标志位 :DF DF ,DDirection irection F Flaglag 方向标志,用于串处理指令处理方向标志,用于串处理指令处理DFDF位为位为 时时,每次操作后使变址寄存器,每次操作后使变址寄存器和和量,量,使串处理从高地址向低地址方向使串处理从高地址向低地址方向处理:处理:当当DFDF位为位为 时时,则使,则使和和量,使串处理从低地量,使串处理从低地址向高地址方向处理:址向高地址方向处理:1 10 0高地址低地址低地址高地址25:中断标志。:中断标志。n当当IF=1IF=1时,允许中断;时,
11、允许中断;n IF=0IF=0时时,关闭中断;关闭中断;:陷井标志(跟踪标志)。用于单步:陷井标志(跟踪标志)。用于单步方式操作方式操作v开中断:开中断:允许允许CPUCPU响应外设的中断请求(响应外设的中断请求(= = ) v关中断:关中断:不允许不允许CPUCPU响应外设的中断请求响应外设的中断请求(= = )v两条指令:两条指令:设置中断允许位(:设置中断允许位(= = ):清除中断允许位(:清除中断允许位(= = ) 2627vOFOF:O Overflow verflow F Flag lag 溢出标志溢出标志n运算时如操作数超出机器表示范围称为运算时如操作数超出机器表示范围称为溢出
12、溢出。u此时此时OFOF位置位置1 1;否则置;否则置0 0。vSFSF:S Sign ign F Flag lag 符号标志符号标志n记录运算结果的符号,结果为负时置记录运算结果的符号,结果为负时置1 1,否则置,否则置0 0。vZFZF:Z Zero ero F Flag lag 零标志零标志n运算结果为运算结果为0 0,置,置1 1;否则置;否则置0 0。 NT OFDFIFTFSFZF AF PF CFIOPL1515141413131212111110109 98 87 76 65 54 43 32 21 10 028vAFAF:A Auxiliary uxiliary C Carr
13、y arry F Flag lag 辅助进位标志辅助进位标志n记录运算时第记录运算时第 位产生的进位值。位产生的进位值。n如第如第 位有进位时置位有进位时置1 1,否则置,否则置0 0。vPFPF:P Parity arity F Flag lag 奇偶标志奇偶标志n当结果操作数中当结果操作数中1 1为偶数时置为偶数时置1 1,否则置,否则置0 0。vCFCF:C Carry arry F Flag lag 进位标志进位标志n记录从最高有效位产生的进位值记录从最高有效位产生的进位值n最高有效位有进位时置最高有效位有进位时置1 1,否则置,否则置0 0。3 33 3的个数的个数151514141
14、3131212111110109 98 87 76 65 54 43 32 21 10 0 NT OFDFIFTFSFZF AF PF CFIOPL2929v条件标志位条件标志位CFCF、OFOFvCFCF位位:( (C Carry arry F Flag)lag)n表示无符号数的溢出表示无符号数的溢出 n有进位有进位CFCF=l=l;n无进位时无进位时CFCF=0=0lOFOF位:位:( (O Overflow verflow F Flag)lag)n表示带符号数的溢出表示带符号数的溢出n若两个若两个, 而而时时, ,OFOF=1=1;n否则否则OFOF=0=0。操作数的符号相同操作数的符号
15、相同结果的符号与之相反结果的符号与之相反l8 8位二进制数:位二进制数:为:为:02550255为为: v1616位二进制数:位二进制数:为:为:065535065535为:为: -32768+32767-32768+32767l无符号数无符号数l带符号数带符号数n无符号数无符号数n带符号数带符号数30v存储单元的内容:存储单元的内容:一个存储单元存一个存储单元存放的信息放的信息(0004) = 1234H (0004) = 1234H v字存放方式:字存放方式:n低位字节放低地址,高位字节放高地址。低位字节放低地址,高位字节放高地址。n字单元的地址以其低地址表示字单元的地址以其低地址表示v同
16、一个地址既可看作同一个地址既可看作字节单元地址字节单元地址,又可看作又可看作字单元地址。字单元地址。地址内容31v双字单元数据存放:双字单元数据存放:与字单元与字单元类似类似n低位字存入低地址区,高位字存入高地址区。低位字存入低地址区,高位字存入高地址区。n地址由其最低字节的地址指定地址由其最低字节的地址指定(0004)=12345678H(0004)=12345678H访问存储器都是以字为单位进行的,也就是说,以访问存储器。参见p.2632v如果用如果用X X表示某存储单元的地址,则表示某存储单元的地址,则X X单元的单元的内容可以表示为内容可以表示为(X)(X)v假如假如X X单元中存放着
17、单元中存放着Y Y,而,而Y Y又是一个地址,则又是一个地址,则可用可用(Y)=(X)(Y)=(X)来表示来表示Y Y单元的内容单元的内容33v举例:举例:(0004H)=5678H(0004H)=5678H而而(5678H)=2F1EH(5678H)=2F1EH,也可记作也可记作 (0004H)=2F1EH(0004H)=2F1EH参见p.2634实模式实模式下最大寻址能力下最大寻址能力 MBMBv8086/80888086/8088地址总线宽为地址总线宽为,即,即有有条地址条地址线。线。1 120202020直接寻址能力为 MB,即为该机的最大存储容量。l 其他处理器:其他处理器:n在在实
18、模式下只能访问前实模式下只能访问前 MB MB 的存储器地址的存储器地址11 135分分,分成若干个不超过,分成若干个不超过单元的段单元的段。64K64K16位段基址位段基址 000016位偏移地址位偏移地址 20位物理地址位物理地址 +0000015015019151136v物理地址的构成:物理地址的构成:n2020位物理地址由位物理地址由1616位段地址和位段地址和1616位偏移地址组成位偏移地址组成v段地址:段地址:必须是必须是小段首地址小段首地址,其低,其低4 4位一定是位一定是0 0。n只取段起始地址的高只取段起始地址的高1616位值位值v偏移地址:偏移地址:指段内相对于段起始地址的
19、偏移值指段内相对于段起始地址的偏移值37公式:公式:物理地址物理地址=16d=16d 段地址段地址+ +偏移地址偏移地址16位段基址位段基址 000016位偏移地址位偏移地址 20位物理地址位物理地址 +00000150150191511将段地址左移 位后加上偏移地址值就是物理地址4(在十六进制中表现为将段地址左移 位)1383839v8086CPU8086CPU同时可管理四个段同时可管理四个段nCSCS: :程序程序nDSDS: :数据数据nESES: :附加数据附加数据nSSSS: :堆栈堆栈注意:这里都是之间发生关系!40v端口端口(port)(port)地址:地址:又称又称端口号端口号
20、n连接主机和外设寄存器的接口连接主机和外设寄存器的接口n独立于内存储器的独立于内存储器的I/OI/O地址空间地址空间v8086/80888086/8088机:机:I/OI/O地址空间可达地址空间可达K Kl端口地址的范围端口地址的范围是是0000 0000 FFFFHFFFFHl占用占用2 2个字节个字节l端口可为端口可为 位或位或位位l端口端口操作常借助操作常借助DXDXv8038680386及后继:及后继:端口可有端口可有3232位,位, 但但I/OI/O地址空间不超过地址空间不超过64KB64KB64648 816160000000100020003001000111000FFFEFFF
21、Fv数据传送指令数据传送指令v 算术运算指令算术运算指令- -加法、减法、加法、减法、乘法、除法;乘法、除法;v 逻辑运算和移位指令;逻辑运算和移位指令;v 控制转移指令;控制转移指令;v 串处理指令;串处理指令;v 处理机控制指令。处理机控制指令。第第41页页指指令令类类型型助助记记符符通通用用传传送送MOV, PUSH, POP, XCHG, XLAT地地址址传传送送LEA, LDS, LES标标志志传传送送PUSHF, POPF, LAHF, SAHF数数据据传传送送输输入入输输出出IN, OUT加加法法ADD, ADC, INC, AAA, DAA减减法法SUB, SBB, DEC,
22、NEG, CMP, AAS, DAS乘乘法法MUL, IMUL, AAM除除法法DIV, IDIV, AAD算算术术运运算算符符号号扩扩展展CBW, CWD逻逻辑辑运运算算AND, TEST, OR, XOR, NOT移移位位SHL, SAL, SHR, SAR逻逻辑辑操操作作循循环环移移位位ROL, ROR, RCL, RCR参考:指令助记符表指指令令类类型型助助记记符符串串操操作作MOVS,CMPS,SCAS,LODS,STOS串串处处理理重重复复控控制制REP,REPE/REPZ,REPNE/REPNZ无无条条件件转转移移JMP条条件件转转移移JE/JZ, JNE/JNZ, JS, JN
23、S, JO, JNOJP, JNP, JC, JNC, JCXZJA/JNBE, JAE/JNB, JB/JNAE, JBE/JNAJG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG循循环环控控制制LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ过过程程调调用用CALL, RET控控制制转转移移中中断断指指令令INT, INTO, IRET处处理理机机控控制制CLC, STC, CMC,CLD, STD, CLI, STINOP, HLT, WAIT, ESC, LOCK4444v指令分类:(按操作数分)指令分类:(按操作数分)n单操作数单操作数指令指令:(
24、(一地址指令一地址指令) )操作码操作码 目的操作数目的操作数(OPR DEST)n如,加如,加1 1操作:操作: n双操作数双操作数指令指令:( (二地址指令二地址指令) ) OPR OPR DESTDEST, , SRCSRC 分为分为源操作数源操作数和和目的操作数目的操作数,运算结果存放到,运算结果存放到目的操作数的地址之中。目的操作数的地址之中。n如,加法操作:如,加法操作: , , 传送传送指令:指令:, ,4545v指令分类:(按操作数分)指令分类:(按操作数分)n三三操作数操作数指令指令: OPR DEST,SRC,SRC1 除给出两个参加运算的操作数外,还给出运算除给出两个参加
25、运算的操作数外,还给出运算结果存放地址。结果存放地址。n无操作数:无操作数: OPR (隐含操作数)(隐含操作数)n如,字节如,字节转换为字转换为字 46468086/802868086/80286系列系列l 立即寻址立即寻址 l 寄存器寻址寄存器寻址 l 直接寻址直接寻址 l 寄存器间接寻址寄存器间接寻址l 寄存器相对寻址寄存器相对寻址l 基址变址寻址基址变址寻址l 相对基址变址寻址相对基址变址寻址 指令中指定操作数或操作数存放位置的方法称为。有有七种基本的寻址方式:七种基本的寻址方式:段寄存器4848l直接直接存放在指令存放在指令中,中,紧跟紧跟在操作码之后,作为在操作码之后,作为指令一部
26、指令一部分分存放在代码段存放在代码段里的里的。16位的立即数,高位位的立即数,高位放在高地址中,低位放在高地址中,低位放在低地址中放在低地址中。32位的立即数,高位位的立即数,高位放在高地址中,低位放在高地址中,低位放在低地址中。放在低地址中。4949用来表示用来表示l用于给寄存器用于给寄存器,且仅用作源操作数字段,不能用,且仅用作源操作数字段,不能用于目的操作数。于目的操作数。如:如: ,5 =(AL)=05H 5 =(AL)=05H ,3064H =(AX)=3064H3064H =(AX)=3064H 即即 (AX)=(AX)=(AHAH,ALAL)= =(30H30H,64H 64H
27、) ,12345678H12345678H =(EAX)=12345678H =(EAX)=12345678H5050下列指令错下列指令错MOV AHMOV AH,500500MOV 50MOV 50,ALAL不能直接给不能直接给和和赋予立即赋予立即数!数!下面下面的指令是错误的:的指令是错误的:MOV DS, 1250HMOV DS, 1250H5151v指令指定寄存器号指令指定寄存器号/ /名称,名称,操作数在寄存器操作数在寄存器中。中。v对对1616位操作数:位操作数:寄存器用寄存器用、和和。v对对8 8位操作数:位操作数:寄存器用寄存器用、和和。v对对3232位操作数:位操作数:寄存器
28、用寄存器用、和和寄存器号操作数从寄存器取寄存器5252v设设(AX)=3064H(AX)=3064H,(BX)=1234H(BX)=1234H,执行:执行:MOV MOV AXAX,BXBX =(=(AX)=1234HAX)=1234H,(BX)(BX)保持保持不变。不变。v设设(ECX)=0123454H(ECX)=0123454H,(EBX)=12349876H(EBX)=12349876H,执执行:行: MOV MOV ECXECX,EBXEBX =(=(ECX)=12349876HECX)=12349876H,(EBX)(EBX)保持保持不变。不变。53531.1. 寄存器寻址时要弄清
29、针对哪个寄存器而言寄存器寻址时要弄清针对哪个寄存器而言 源、目的寄存器分别是什么?源、目的寄存器分别是什么?vMOV ALMOV AL,BX BX 对吗?对吗?vMOV AXMOV AX,BH BH 对吗?对吗?vMOV ALMOV AL,AH AH 对吗?对吗?2. 源寄存器和目的寄存器的源寄存器和目的寄存器的。v有效地址的计算:有效地址的计算:=基址+(变址比例因子)+位移量n除比例因子外是固定值外,其他都可正可负。n对于基址、变址以及位移量,如未给出其值,则默认为0。5454P.385555如右图,如右图, ( (DS)=3000H DS)=3000H ,执行:,执行:MOV MOV A
30、XAX,2000H2000H ; ;位移量的值位移量的值结果为:结果为:( (AX)=3050HAX)=3050H这里以实模式计算物理地址。直接寻址方式适用于处理单个变量直接寻址方式适用于处理单个变量5656v以下两指令等效以下两指令等效MOV AXMOV AX,VALUE VALUE ; ;用符号地址代替数值地址用符号地址代替数值地址 ;VALUE ;VALUE存放操作单元的符号地址存放操作单元的符号地址MOV AXMOV AX,VALUEVALUE v当当VALUEVALUE在附加段中,应指定段跨越前缀:在附加段中,应指定段跨越前缀: MOV AXMOV AX,ES:VALUEES:VAL
31、UE或或 MOV AXMOV AX,ES:VALUEES:VALUE规定:双操作数指令除规定:双操作数指令除外只能有外只能有一个操一个操作数使用寄存器方式作数使用寄存器方式。(不能两个都是内存单元)(不能两个都是内存单元)MOV MOV VAL1VAL1,VAL2 VAL2 ; ; 错错 5757v有效地址存放在寄存器有效地址存放在寄存器中中n指令指令中给出中给出寄存器名称寄存器名称v所需的操作数在存储器中所需的操作数在存储器中仅包含基址或变址寄存器仅包含基址或变址寄存器内容的内容的一一种种成分成分n在在1616位寻址时可用寄存器为:位寻址时可用寄存器为:BXBX、BPBP、SISI和和DID
32、In在在3232位位寻址时可用寄存器为寻址时可用寄存器为:EAXEAX、EBXEBX、ECXECX、EDXEDX、ESPESP、EBPEBP、ESIESI和和EDIEDIEA操作数段基地址+存储器寄存器基址或变址寄存器指令5858如果如果(DS)=2000H(DS)=2000H,(BX)=1000H(BX)=1000H,执行,执行MOV AXMOV AX,BXBX则因则因 物理地址物理地址=20000+1000=21000H=20000+1000=21000H,结果为结果为: : (AX)=50A0H (AX)=50A0HA050000010002000H:也可指定跨越前缀来取得其他段的数据M
33、OV AX,ES:BX ;用用ES代替代替DS进行进行“位移位移”5959v 1616位寄存器:指令如位寄存器:指令如 MOV AXMOV AX,SISIl 指令中指定的指令中指定的寄存器寄存器BXBX、SISI、DIDI,则操作数在,则操作数在现行数据段中,用现行数据段中,用段寄存器段寄存器DSDS , 物理地址物理地址=16d=16d(DS)(DS)十十(BX)(BX)或或 物理地址物理地址=16d=16d(DS)(DS)十十(SI)(SI)或或 物理地址物理地址=16d=16d(DS)(DS)十十(DI)(DI)l 指令中指定指令中指定,操作数在堆栈段中,用,操作数在堆栈段中,用段寄存器
34、段寄存器,物理地址物理地址=16d=16d ( () )十十( () )6060是一个基址或变址寄存器的内是一个基址或变址寄存器的内容和指令中指定容和指令中指定的的之之和和n有效地址由有效地址由两种两种成分组成成分组成v所需的操作数在存储器中所需的操作数在存储器中地址操作数段基地址+存储器存储器寄存器寄存器+EA位移量基址或变址寄存器指指 令令6161v下列两指令等价:下列两指令等价:MOV AXMOV AX,COUNTSICOUNTSIMOV AXMOV AX,COUNT+SICOUNT+SI ; ;这里这里COUNTCOUNT为为1616位位移量的符号地址位位移量的符号地址 。 设设COU
35、NTCOUNT= 3000H= 3000H, ( (DS)=3000HDS)=3000H,( (SI)=2000HSI)=2000H,对,对指令指令MOV AXMOV AX,COUNTSICOUNTSIn源操作数物理源操作数物理地址地址=30000+3000+2000 =30000+3000+2000 =35000H=35000Hn执行结果是:执行结果是: (AX)=1234H(AX)=1234H(AX)=(DS)*16d+(COUNT+(SI)62628086/80888086/8088:v物理地址物理地址= 16d= 16d ( ()+()+() ) + + 8 8位位移量位位移量或或(
36、() ) 或或1616位位移量位位移量或或( () )v物理物理地址地址= 16d= 16d( ()+()+() ) + 8 + 8位位移量位位移量或或1616位位移量位位移量v物理物理地址地址= 16d= 16d( ()+()+() ) +8+8位位移量位位移量或或1616位位移量位位移量6363; ;这里这里TABLETABLE为为3232位位位移量的位移量的符号地址符号地址,ESI,ESI内容指向内容指向表格中的一项表格中的一项 。v用于表格处理,用于表格处理,可设置为位移量。可设置为位移量。n利用修改基址或变址寄存器内容取得表格中的值利用修改基址或变址寄存器内容取得表格中的值MOV D
37、LMOV DL,ES:STRINGSIES:STRINGSIl 使用段跨越前缀使用段跨越前缀6464是一个是一个和一个和一个的内容之的内容之n有效地址由有效地址由两种两种成分成分组成组成n两个寄存器均由段与寄存器间的默认关系两个寄存器均由段与寄存器间的默认关系确定确定v 所需的操作数在存储器所需的操作数在存储器中中6565基址值操作数段基地址+存储器存储器基址寄存器基址寄存器+EA变址寄存器基址寄存器指指 令令变址值变寄存器变寄存器6666凡使用,,和时,默认段为段。其他寄存器多数默认段为寄存器。6767v 例例3.103.10: MOV AXMOV AX,BXDI BXDI (也可写成:(也
38、可写成:MOV AXMOV AX,BX+DI) BX+DI) 如,如,(DS)=2100H, (BX)=0158H, (DI)=10A5H(DS)=2100H, (BX)=0158H, (DI)=10A5H则,则,EA=0158+10A5=11FDHEA=0158+10A5=11FDH 物理地址物理地址=21000+11FD=221FDH=21000+11FD=221FDH执行结果:执行结果:(AX)=1234H(AX)=1234H6868MOV AX,BXDI (DS)=2100H, (BX)=0158H, (DI)=10A5H6969是一个是一个和一个和一个的内容和一个的内容和一个之之和和
39、n有效地址有效地址由由三种三种成分成分组成组成7070基址值操作数段基地址+存储器存储器基址寄存器基址寄存器+EA指指 令令变址值变址寄存器变址寄存器变址寄存器基址寄存器位移量7171v8086/8088:当基址寄存器为当基址寄存器为时,使用时,使用为段寄存器为段寄存器当基址寄存器为当基址寄存器为时,使用时,使用为段寄存器为段寄存器物理地址物理地址=16d (DS)+(BX)+ (SI) + 8位位移量位位移量或或(DI) 或或16位位移量位位移量或物理地址或物理地址=16d (SS)+(BP)+ (SI) + 8位位移量位位移量或或(DI) 或或16位位移量位位移量 7272设设(DS)=3
40、000H(DS)=3000H,(BX)=2000H(BX)=2000H,(SI)=1000H, (SI)=1000H, MASK=0250H, MASK=0250H, 例:MOV AH, 80HMOV ECX, 12345678HMOV AX, 4576H ;以上指令中的第二操作数第二操作数都是注:立即数不能作为指令中的第一操作数 例:MOV EAX, EBX ADD AX, DX ADD AX, 1234H 例:MOV BX, 1234H ; ;缺省使用段寄存器DS MOV ES:1000H, AX ;指定用段寄存器ES 例:MOV BX, DI ;EA=(DI), ;PA=(DS)*16+
41、EA若用、和等之一来指定,则其缺省的段寄存器为;若有效地址用来指定,则其缺省的段寄存器为 (即:)。 指令中给出的8位/16位偏移量用补码表示。计算时,若偏移量是8位,则进行符号扩展成16位。当所得的有效地址超过0FFFFH,则取其64K的模。例:MOV BX, SI+100H ;=(SI)+100H;=(DS)*16+例:例:MOV BX, BX+SI 或写成:或写成:MOV BX, BXSI例:MOV AX, BX+SI+200H或写成:MOV AX, 200HBXSI ;=(BX)+(SI)+200H; =(DS)*16+ 若有效地址用、和等之一来指定,则其缺省的段寄存器为;若有效地址用
42、来指定,则其缺省的段寄存器为。 ; =(BX)+(SI) ; =(DS)*16+ 1.1. 段内直接寻址段内直接寻址2.2. 段内间接寻址段内间接寻址3.3. 段间直接寻址段间直接寻址 4.4. 段间间接寻址段间间接寻址注:这注:这几组指令主要是关于指令的跳几组指令主要是关于指令的跳转,变动的转,变动的是是和和 确定一条指令的地址确定一条指令的地址 v转移分类转移分类: :条件转移、无条件转移条件转移、无条件转移:均为均为段内转移段内转移;:段内与段间转移:段内与段间转移都可以都可以;:同一代码段范围内转移,同一代码段范围内转移,只需改变只需改变内容,内容,不变。不变。:转移到另一代码段去执行
43、程序,转移到另一代码段去执行程序, 、均变。均变。基于单个标志位的条件转移指令基于单个标志位的条件转移指令(Jumps Based on Special Arithmetic) 指令格式指令格式转移条件转移条件功能描述功能描述JE/JZ oprJE/JZ oprZF=1ZF=1Jump Equal or Jump ZeroJump Equal or Jump ZeroJNE/JNZ oprJNE/JNZ oprZF=0ZF=0Jump Not Equal or Jump Not ZeroJump Not Equal or Jump Not ZeroJC oprJC oprCF=1CF=1Jum
44、p CarryJump CarryJNC oprJNC oprCF=0CF=0Jump Not CarryJump Not CarryJO oprJO oprOF=1OF=1Jump OverflowJump OverflowJNO oprJNO oprOF=0OF=0Jump Not OverflowJump Not OverflowJP/JPE oprJP/JPE oprPF=1PF=1Jump Parity or Jump Parity EvenJump Parity or Jump Parity EvenJNP/JPO oprJNP/JPO oprPF=0PF=0Jump Not Pa
45、rity or Jump Parity OddJump Not Parity or Jump Parity OddJS oprJS oprSF=1SF=1Jump Sign (negative)Jump Sign (negative)JNS oprJNS oprSF=0SF=0Jump Not Sign (positive)Jump Not Sign (positive)无符号数的条件转移指令无符号数的条件转移指令(Jumps Based on Unsigned/Logic Data) 指令格式检测的转移条件功能描述JA/JNBE oprCF=0 and ZF=0CF=0 and ZF=0Ju
46、mp Above or Jump Not Below or EqualJAE/JNB oprCF=0CF=0Jump Above or Equal or Jump Not BelowJB/JNAE oprCF=1CF=1Jump Below or Jump Not Above or EqualJBE/JNA oprCF=1 or ZF=1CF=1 or ZF=1Jump Below or Equal or Jump Not Above指令格式检测的转移条件功能描述JG/JNLE oprZF=0 and SF=OFZF=0 and SF=OFJump Greater or Jump Not Le
47、ss or EqualJGE/JNL oprSF=OFSF=OFJump Greater or Equal or Jump Not LessJL/JNGE oprSFOFSFOFJump Less or Jump Not Greater or EqualJLE/JNG oprZF=1 or SFOFZF=1 or SFOFJump Less or Equal or Jump Not Greater有符号数的条件转移指令(Jumps Based on Signed/Arithmetic Data) 基于计数的条件转移指令JCXZ/JECXZ(Jump if CX/ECX is Zero) 指令格
48、式:JCXZ label; 若CX = 0,则转移到label说明: label相对位移量必须在-128127之间,即只能短转移,所有80 x86CPU都一样。1)1) 段内直接短转移(段内直接短转移():位移量):位移量8 8位位n加操作符加操作符n只能用作段只能用作段内内直接寻址的直接寻址的2)2) 段内直接近转移(段内直接近转移():位移量):位移量1616位位n加操作符加操作符 可缺省可缺省。n通常,通常,如当前如当前( ()=3000H, NEW_ADDR=3050H)=3000H, NEW_ADDR=3050H则经编译后确定则经编译后确定=50H,指令中给出转向的,指令中给出转向的
49、=3050H短跳转短跳转只能只能使用使用段内段内直接寻址的直接寻址的 位位如当前如当前( ()=3000H, NEW_ADDR=3050H)=3000H, NEW_ADDR=3050H则经编译后确定则经编译后确定=50H,指令中给出转向的,指令中给出转向的=3050H短跳转短跳转“JMP SHORT 标号标号”功能:功能:(IP)=(IP)+例:例: NEW_ADDRNEW_ADDRv位移量计算同前位移量计算同前n注:注:80386-80386-代码段的偏移地址放在代码段的偏移地址放在EIPEIP中中表示在同一表示在同一转移,位移量在:转移,位移量在:-3276832767-327683276
50、7字节范围字节范围n这种寻址方式对于条件转移或无条件转移指令这种寻址方式对于条件转移或无条件转移指令都适用。l 近跳转中,近跳转中,可缺省。可缺省。例:例: NEW_ADDRNEW_ADDRv位移量计算同前位移量计算同前n注:注:80386-80386-代码段的偏移地址放在代码段的偏移地址放在EIPEIP中中表示在同一表示在同一转移,位移量在:转移,位移量在:-3276832767-3276832767字节范围字节范围n这种寻址方式对于条件转移或无条件转移指令这种寻址方式对于条件转移或无条件转移指令都适用。l 近跳转中,近跳转中,可缺省。可缺省。“JMP NEAR PTR 标号标号”功能:功能
51、:(IP)=(IP)+ 转向转向的的是是一个一个或是一或是一个个的内容,用该值来取代的内容,用该值来取代寄存器的寄存器的内容。内容。段内间接寻址转移指令:段内间接寻址转移指令:BXBXn BP+TABLE BP+TABLE 注:注:说明所取得的转向地址是一个说明所取得的转向地址是一个(1616位)位)有效地址。有效地址。WORD PTRWORD PTR直接把求得的转向直接把求得的转向送到送到寄存器寄存器 计算公式计算公式: : 物理地址物理地址=16d=16d (DS)+EA(DS)+EA例 : 假 设例 : 假 设 ( D S ) =( D S ) = 2 0 0 0 H2 0 0 0 H
52、, ( ( B X ) = 1 2 5 6 HB X ) = 1 2 5 6 H ,(SI)=528FH(SI)=528FH; ;位移量位移量TABLETABLE的内容的内容= 20A1H= 20A1H,(232F7H)=3280H(232F7H)=3280H,(264E5H)=2450H(264E5H)=2450H,对指令,对指令 BX BX ;( ;(IPIP)=1256H)=1256H TABLE+BX TABLE+BX; ;( (IP)=3280HIP)=3280H BXSI BXSI;(IP)=2450H;(IP)=2450H TABLE TABLE ;(IP)=20A1H;(IP)
53、=20A1H 求各指令转向的求各指令转向的(IP)=(IP)=?WORD PTRWORD PTRSHORTSHORTv目标地址在指令中目标地址在指令中v指令中直接提供了转向指令中直接提供了转向和和2828偏移地址段地址IP寄存器CS寄存器指令l 例:例:JMP JMP NEW_ROUTINENEW_ROUTINEnNEW_ROUTINE NEW_ROUTINE 为转向的符号地址为转向的符号地址表示表示FAR PTR FAR PTR nFAR PTRFAR PTR偏移地址取代偏移地址取代寄存器内容寄存器内容段地址取代段地址取代寄存器内容寄存器内容v段间转移,段间转移,和和都要更新,都要更新,v新
54、新和新和新由指令操作码之后的连续两个由指令操作码之后的连续两个字字提供提供OP用段间转移的操作符用段间转移的操作符表示:转移表示:转移距离超过距离超过32K字节,字节,或在或在不同不同段之间转移。段之间转移。FAR PTRl FARv目标地址存放在存储器中目标地址存放在存储器中v指令形式:指令形式:SISI arrayBX+SIarrayBX+SI INTERS+BXINTERS+BX其中,其中,INTERS+BX说明寻址方式为直接变说明寻址方式为直接变址寻址方式,址寻址方式,为双字操作符,为双字操作符,说明转向地址需取双字为段间转移指令。说明转向地址需取双字为段间转移指令。v用存储器中的第一
55、个字的内容取代用存储器中的第一个字的内容取代( () )v用存储器中的第二个字的内容取代用存储器中的第二个字的内容取代( () )偏移地址段地址IP寄存器CS寄存器存储器求物理地址求物理地址用存储器中两个相继用存储器中两个相继的内容取代的内容取代和和寄存器中的原始内容,以达到转移的目的。寄存器中的原始内容,以达到转移的目的。v段间间接寻址用双字操作符段间间接寻址用双字操作符,段间转移转向地址需取段间转移转向地址需取v例:例: TABLESITABLESIv例:例: ES:TABLESIES:TABLESIv例:例: SPSPv例:例: ARRAYARRAYv注意:注意:与与 ARRAYARRA
56、Y的区别的区别 Address Address ; ;无条件转移无条件转移 ADDR1 ADDR1; ;段内直接寻址段内直接寻址;跳;跳8 8位位 ADDR2ADDR2 ; ;段内直接寻址段内直接寻址; ;跳跳1616位位 TABLE TABLE ; ;段内间接寻址段内间接寻址 ADDR3 ADDR3 ; ;段间段间直接寻址直接寻址SHORTSHORTNEAR PTR NEAR PTR FAR PTR FAR PTR AGAIN+AGAIN+ ; ;段间间接寻址段间间接寻址 ; ;段内间接寻址段内间接寻址 + + ; ;段内间接寻址段内间接寻址DWORD PTR DWORD PTR 指令系统可
57、分为指令系统可分为6 6组组: :1.1. 数据传送指令数据传送指令2.2. 算术指令算术指令- -乘法与除法乘法与除法3.3. 逻辑指令逻辑指令4.4. 控制转移指令控制转移指令5.5. 串处理指令串处理指令6.6. 处理机控制指令处理机控制指令1.1. 通用数据传送指令通用数据传送指令2.2. 累加器专用传送指令累加器专用传送指令 3.3. 地址传送指令地址传送指令 4.4. 标志寄存器传送指令标志寄存器传送指令 5.5. 类型转换指令类型转换指令一、通用数据传送指令一、通用数据传送指令1. (来自Move ):传送指令 一般形式:MOV dst, src; (dst) (src),将源操
58、作数src复制到目的操作 数dst,src不变。说明:两个操作数的数据类型要相同,要同为8位、16位或32位;两个操作数中必须有一个寄存器,但不能同时为;代码段寄存器CS不能为,但可作为源操作数;指令指针IP不能作为MOV指令的操作数;立即数不能作为;l立即数不能直接传给;两个操作数不能同时为对标志位无影响8 8位通用寄存器位通用寄存器8 8个个: ALAL、AHAH、BLBL、BHBH、CLCL、CHCH、DLDL、DHDH。1616位通用寄存器位通用寄存器8 8个个:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP。3232位通用寄存器位通用寄存器8 8个个:
59、EAXEAX、EBXEBX、ECXECX、EDXEDX、ESIESI、EDIEDI、EBPEBP、ESPESP。数据传送指令 100101vMOV DSMOV DS,32543D32543DvMOV DSMOV DS,DATA DATA ; ;这里的这里的DATADATA为段名为段名 ; ; 注意:如注意:如DATADATA为变量名或标号地址,则指为变量名或标号地址,则指令令 MOV DSMOV DS,DATADATA是正确的是正确的vMOV CSMOV CS,AXAXvMOV SSMOV SS,DSDSvMOV SIMOV SI,TABLE TABLE v汇编指令中,汇编指令中,方括号方括号
60、 的含义的含义 :n表示一种间接间接的取操作数方式n寄存器能加方括号的只有4个:nSI, DI, BX, BPn常数、变量名也可以加方括号,比如 020Hn常数加方括号表示地址,而不加,则表示立即数。n但,变量名是否加方括号情况一样,都是间接寻址。102102v如:如:ADD AL , SI n与AL中内容相加的数,不是SI寄存器的内容,而是以SI的内容作为的内存操作数。103103v方括号方括号内,内,可以不同表达方式。可以不同表达方式。n SI 是 nSI是nSI+2是n又称,也可以写成2SI形式。 nBX+SI是n也可写成BXSI nBX+SI+20H是n可以写成20HBXSI之类的形式
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026消费电子市场格局分析及技术突破与资本布局策略研究报告
- 2026中国手术机器人临床应用培训体系与市场教育成本评估报告
- 2026中国人工智能技术应用市场全景调研与竞争格局分析报告
- 针对实习生的护理教学查房
- 手术室责任制整体护理
- 迎接二甲复审护理部汇报
- 造瘘口肛袋更换及护理
- 升主动脉瘤病人护理
- 2026散装锂电池原材料价格走势与储能产业需求预测报告
- 2026中国医疗大数据应用现状与商业化路径研究报告
- 2024年设备监理师之质量投资进度控制题库及答案【各地真题】
- 新闻标题的翻译与技巧课件
- 了解月经周期与女性乳腺健康的关系
- GB/T 7000.201-2023灯具第2-1部分:特殊要求固定式通用灯具
- 人体解剖学肌肉运动解剖培训课件
- 见证取样记录表
- 教师节师德师风主题演讲PPT
- 心理咨询的理论与实务江光荣演示文稿
- 通信电子线路习题解答
- 统计学贾俊平第章-假设检验课件
- 权力政治社会学教学课件
评论
0/150
提交评论