汇编指令英文全称_第1页
汇编指令英文全称_第2页
汇编指令英文全称_第3页
汇编指令英文全称_第4页
汇编指令英文全称_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、eax, ebx, ecx, edx, esi, edi, ebp, esp等都是X86 汇编语言中CPU上的通用寄存器的名称,是32位的寄存器。如果用C语言来解释,可以把这些寄存器当作变量看待。比方说:  add eax,-2 ;     /可以认为是给变量eax加上-2这样的一个值。这些32位寄存器有多种用途,但每一个都有“专长”,有各自的特别之处。EAX   是"累加器"(accumulator), 它是很多加法乘法指令的缺省寄存器。EBX  

2、60;是"基地址"(base)寄存器, 在内存寻址时存放基地址。ECX   是计数器(counter), 是重复(REP)前缀指令和LOOP指令的内定计数器。EDX    是数据(data),总是被用来放整数除法产生的余数。ESI/EDI  分别叫做"源/目标索引寄存器"(source/destination index),因为在很多字符串操作指令中, DS:ESI指向源串,而ES:EDI指向目标串.EBP  是"基址指针"(BASE

3、POINTER), 它最经常被用作高级语言函数调用的"框架指针"(frame pointer). 在破解的时候,经常可以看见一个标准的函数起始代码:push ebp ;  保存当前ebpmov ebp,esp ;  EBP设为当前堆栈指针sub esp, xxx ;  预留xxx字节给函数临时变量.这样一来,EBP 构成了该函数的一个框架, 在EBP上方分别是原来的EBP, 返回地址和参数. EBP下方则是临时变量. 函数返回时作 mov esp,ebp/pop ebp/ret  &#

4、160;即可.ESP   专门用作堆栈指针,被形象地称为栈顶指针,堆栈的顶部是地址小的区域,压入堆栈的数据越多,ESP也就越来越小。在32位平台上,ESP每次减少4字节。对于8086计算机,由于寄存器是十六位的,所以限制了寻址仅仅为二的十六次方,也就是十六个二进制位,也就是64K内存。但是对于我们编程使用来说是不够的。8086的解决办法是将20位的物理地址分为段地址和段内偏移地址表示。也就是说段地址乘以十六,加上段内偏移地址行程一个物理地址。Physicall address = segment address * 16 + offset.1234:1000就表示

5、物理地址1234H*10H+1000H=12350H在汇编语言中,CS表示代码段 code segment,ES表示附加段 extra segment,SS表示堆栈段 stack segment.就是表示段地址的 1.通用数据传送指令MOV-> move  MOV dest,src ;destsrc  MOV指令把一个字节或字的操作数从源地址src传送至目的地址dest。MOVSX->extended move with sign data MOVZX->extended move with zero dataPUSH->

6、;push POP->pop进栈出栈指令PUSHA->push all POPA->pop all PUSHAD->push all data POPAD->pop all data BSWAP->byte swapXCHG->exchange交换指令用来将源操作数和目的操作数内容交换,操作数可以是字、也可以是字节,可以在通用寄存器与通用寄存器或存储器之间对换数据,但不能在存储器与存储器之间对换数据。 mov ax,1234h ;ax=1234h mov bx,5678h ;bx=5

7、678h xchg ax,bx ;ax=5678h,bx=1234h xchg ah,al ;ax=7856hCMPXCHG->compare and change XADD->exchange and addXLAT->translate 换码指令用于将BX指定的缓冲区中、AL指定的位移处的数据取出赋给AL。 2.输入输出端口传送指令IN->input OUT->output3.目的地址传送指令LEA->load effective addres有效地址传送指令mov bx,0400hmov si

8、,3chlea bx,bx+si+0f62h ;BX=139EH这里BX得到的是主存单元的有效地址,不是物理地址,也不是该单元的内容。LDS->load DS LES->load ES LFS->load FS LGS->load GS LSS->load SS4.标志传送指令LAHF->load AH from flag SAHF->save AH to flag PUSHF->push flag POPF->pop flag PUSHD->push d

9、flag POPD->pop dflag二、算术运算指令ADD->add加法指令 mov al,0fbh ;al=0fbhadd al,07h ;al=02hADC->add with carry INC->increase 1 AAA->ascii add with adjust DAA->decimal add with adjust SUB->substract SBB->substract with borrow DEC->decrease 1 NEC-

10、>negative CMP->compare AAS->ascii adjust on substract DAS->decimal adjust on substract MUL->multiplication IMUL->integer multiplication AAM->ascii adjust on multiplication DIV->divide IDIV->integer divide AAD->ascii adjust on

11、 divide CBW->change byte to word CWD->change word to double word CWDE->change word to double word with sign to EAX CDQ->change double word to quadrate wordCLTD->covert long to double 三、逻辑运算指令AND->and or->or XOR->xor NOT->not TES

12、T->test SHL->shift left SAL->arithmatic shift left SHR->shift right SAR->arithmatic shift right ROL->rotate left ROR->rotate right RCL->rotate left with carry RCR->rotate right with carry四、串指令MOVS->move string CMPS->compar

13、e string SCAS->scan string LODS->load string STOS->store string REP->repeat REPE->repeat when equal REPZ->repeat when zero flag REPNE->repeat when not equal REPNZ->repeat when zero flag REPC->repeat when carry flag REPNC-&g

14、t;repeat when not carry flag五、程序转移指令1>无条件转移指令(长转移)JMP->jump CALL->call RET->return RETF->return far2>条件转移指令(短转移,-128到+127的距离内)JAE->jump when above or equal JNB->jump when not below JB->jump when below JNAE->jump when not above or equal 

15、;JBE->jump when below or equal JNA->jump when not above JG->jump when greater JNLE->jump when not less or equal JGE->jump when greater or equal JNL->jump when not less JL->jump when less JNGE->jump when not greater or equal JLE->jump

16、 when less or equal JNG->jump when not greater JE->jump when equal JZ->jump when has zero flag JNE->jump when not equal JNZ->jump when not has zero flag JC->jump when has carry flag JNC->jump when not has carry flag JNO->jump when not h

17、as overflow flag JNP->jump when not has parity flag JPO->jump when parity flag is odd JNS->jump when not has sign flag JO->jump when has overflow flag JP->jump when has parity flag JPE->jump when parity flag is even JS->jump when has sign flag3

18、>循环控制指令(短转移)LOOP->loop LOOPE->loop equal LOOPZ->loop zero LOOPNE->loop not equal LOOPNZ->loop not zero JCXZ->jump when CX is zero JECXZ->jump when ECX is zero4>中断指令INT->interrupt INTO->overflow interrupt IRET->interrupt retu

19、rn5>处理器控制指令HLT->halt WAIT->wait ESC->escape LOCK->lock NOP->no operation STC->set carry CLC->clear carry CMC->carry make change STD->set direction CLD->clear direction STI->set interrupt CLI->clear interrup

20、t  六、伪指令DW->definw word PROC->procedure ENDP->end of procedure SEGMENT->segment ASSUME->assume ENDS->end segment END->end汇编指令中文释义数据传输指令它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.1. 通用数据传送指令.MOV 传送字或字节.MOVSX 先符号扩展,再传送.MOVZX 先零扩展,再传送.PUSH 把字压入堆栈.POP 把字弹出堆栈

21、.PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.BSWAP 交换32位寄存器里字节的顺序XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数)CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX )XADD 先交换再累加.( 结果在第一个操作数里 )XLAT 字节查

22、表转换. BX 指向一张 256 字节的表的起点, AL 为表的索引值 (0-255,即0-FFH); 返回 AL 为查表结果. ( BX+AL->AL )2. 输入输出端口传送指令.IN I/O端口输入. ( 语法: IN 累加器, 端口号DX )OUT I/O端口输出. ( 语法: OUT 端口号DX,累加器 )输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器 DX 指定时,其范围是 0-65535.3. 目的地址传送指令.LEA 装入有效地址.例: LEA DX,string ;把偏移地址存到DX.LDS 传送目标指针,把指针内容装入DS.例: LDS SI,str

23、ing ;把段地址:偏移地址存到DS:SI.LES 传送目标指针,把指针内容装入ES.例: LES DI,string ;把段地址:偏移地址存到ES:DI.LFS 传送目标指针,把指针内容装入FS.例: LFS DI,string ;把段地址:偏移地址存到FS:DI.LGS 传送目标指针,把指针内容装入GS.例: LGS DI,string ;把段地址:偏移地址存到GS:DI.LSS 传送目标指针,把指针内容装入SS.例: LSS DI,string ;把段地址:偏移地址存到SS:DI.4. 标志传送指令.LAHF 标志寄存器传送,把标志装入AH.SAHF 标志寄存器传送,把AH内容装入标志寄

24、存器.PUSHF 标志入栈.POPF 标志出栈.PUSHD 32位标志入栈.POPD 32位标志出栈.二、算术运算指令ADD 加法.ADC 带进位加法.INC 加 1.AAA 加法的ASCII码调整.DAA 加法的十进制调整.SUB 减法.SBB 带借位减法.DEC 减 1.NEC 求反(以 0 减之).CMP 比较.(两操作数作减法,仅修改标志位,不回送结果).AAS 减法的ASCII码调整.DAS 减法的十进制调整.MUL 无符号乘法.IMUL 整数乘法.以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),AAM 乘法的ASCII码调整.DIV 无符号除法.IDIV 整数除法

25、.以上两条,结果回送:商回送AL,余数回送AH, (字节运算);或 商回送AX,余数回送DX, (字运算).AAD 除法的ASCII码调整.CBW 字节转换为字. (把AL中字节的符号扩展到AH中去)CWD 字转换为双字. (把AX中的字的符号扩展到DX中去)CWDE 字转换为双字. (把AX中的字符号扩展到EAX中去)CDQ 双字扩展. (把EAX中的字的符号扩展到EDX中去)三、逻辑运算指令AND 与运算.or 或运算.XOR 异或运算.NOT 取反.TEST 测试.(两操作数作与运算,仅修改标志位,不回送结果).SHL 逻辑左移.SAL 算术左移.(=SHL)SHR 逻辑右移.SAR 算

26、术右移.(=SHR) 当值为负时,高位补 1 ;当值为正时,高位补 0 ROL 循环左移.ROR 循环右移.RCL 通过进位的循环左移.RCR 通过进位的循环右移.以上八种移位指令,其移位次数可达255次.移位一次时, 可直接用操作码. 如 SHL AX,1.移位>1次时, 则由寄存器CL给出移位次数.如 MOV CL,04SHL AX,CL四、串指令DS:SI 源串段寄存器 :源串变址.ES:DI 目标串段寄存器:目标串变址.CX 重复次数计数器.AL/AX 扫描值.D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.Z标志 用来控制扫描或比较操作的结束.MOV

27、S 串传送.( MOVSB 传送字符. MOVSW 传送字. MOVSD 传送双字. )CMPS 串比较.( CMPSB 比较字符. CMPSW 比较字. )SCAS 串扫描.把AL或AX的内容与目标串作比较,比较结果反映在标志位.LODS 装入串.把源串中的元素(字或字节)逐一装入AL或AX中.( LODSB 传送字符. LODSW 传送字. LODSD 传送双字. )STOS 保存串.是LODS的逆过程.REP 当CX/ECX<>0时重复.REPE/REPZ 当ZF=1或比较结果相等,且CX/ECX<>0时重复.REPNE/REPNZ 当ZF=0或比较结果不相等,且

28、CX/ECX<>0时重复.REPC 当CF=1且CX/ECX<>0时重复.REPNC 当CF=0且CX/ECX<>0时重复.五、程序转移指令1>无条件转移指令 (长转移)JMP 无条件转移指令CALL 过程调用RET/RETF过程返回.2>条件转移指令 (短转移,-128到+127的距离内)( 当且仅当(SF XOR OF)=1时,OP1 JA/JNBE 不小于或不等于时转移.JAE/JNB 大于或等于转移.JB/JNAE 小于转移.JBE/JNA 小于或等于转移.以上四条,测试无符号整数运算的结果(标志C和Z).JG/JNLE 大于转移.JGE

29、/JNL 大于或等于转移.JL/JNGE 小于转移.JLE/JNG 小于或等于转移.以上四条,测试带符号整数运算的结果(标志S,O和Z).JE/JZ 等于转移.JNE/JNZ 不等于时转移.JC 有进位时转移.JNC 无进位时转移.JNO 不溢出时转移.JNP/JPO 奇偶性为奇数时转移.JNS 符号位为 "0" 时转移.JO 溢出转移.JP/JPE 奇偶性为偶数时转移.JS 符号位为 "1" 时转移.3>循环控制指令(短转移)LOOP CX不为零时循环.LOOPE/LOOPZ CX不为零且标志Z=1时循环.LOOPNE/LOOPNZ CX不为零且

30、标志Z=0时循环.JCXZ CX为零时转移.JECXZ ECX为零时转移.4>中断指令INT 中断指令INTO 溢出中断IRET 中断返回5>处理器控制指令HLT 处理器暂停, 直到出现中断或复位信号才继续.WAIT 当芯片引线TEST为高电平时使CPU进入等待状态.ESC 转换到外处理器.LOCK 封锁总线.NOP 空操作.STC 置进位标志位.CLC 清进位标志位.CMC 进位标志取反.STD 置方向标志位.CLD 清方向标志位.STI 置中断允许位.CLI 清中断允许位.六、伪指令DW 定义字(2字节).PROC 定义过程.ENDP 过程结束.SEGMENT 定义段.ASSU

31、ME 建立段寄存器寻址.ENDS 段结束.END 程序结束.偶有一日用到汇编,发现有一大段代码读起来竟是如此费力,很多指令由于长时间不用忘记了。上网查了一下,归类如下:MOV(MOVe)   传送指令PUSH     入栈指令POP     出栈指令XCHG(eXCHanG)   交换指令XLAT(TRANSLATE)   换码指令LEA (Load Effective Address) 有效地址送寄存器指令LDS(Load DS with pointer

32、) 指针送寄存器和DS指令LES(Load ES with pointer) 指针送寄存器和ES指令LAHF(Load AH with Flags) 标志位送AH指令SAHF(Store AH into Flgs) AH送标志寄存器指令PUSHF(PUSH the Flags)   标志进栈指令POPF(POP the Flags)   标志出栈指令ADD     加法指令ADC     带进位加法指令INC     加1指令SUB(S

33、UBtract)   不带借位的减法指令SBB(SuVtrach with borrow) 带借位的减法指令DEC(DECrement)   减1指领NEG(NEGate)   求补指令CMP(CoMPare)   比较指令MUL(unsinged MULtiple) 无符号数乘法指令IMUL(sIgned MUL tiple) 有符号数乘法指令DIV(unsigned DIVide)   无符号数除法指令IDIV(sIgned DIVide)   有符号数除法指令CBW(C

34、ount Byte to Word) 字节转换为字指令CWD(Count Word to Doble word) 字转换为双字指令DAA   压缩的BCD码加法十进制调整指令DAS   压缩的BCD码减法十进制调整指令AAA   非压缩的BCD码加法十进制调整指令AAS   非压缩的BCD码加法十进制调整指令AND     逻辑与指令OR     逻辑或指令XOR     逻辑异或指令NOT

35、60;    逻辑非指令TEST     测试指令SHL(SHift logical Letf)   逻辑左移指令SHR(SHift logical Right)   逻辑右移指令ROL(Rotate Left )   循环左移指令P58ROR(Rotate Right)   循环右移指令P58RCL(Rotate Left through Carry) 带进位循环左移RCR(Rotate Right through Carry) 带进位循环左移

36、MOVS(MOVe String)   串传送指令STOS(STOre into String) 存入串指令LODS(LOad from string) 从串取指令REP(REPeat)   重复操作前CLD(CLear Direction flag) 清除方向标志指令STD(SeT Direction flag)   设置方向标志指令CMPS(CoMPare String)   串比较指令SCAS(SCAn String)   串扫描指令REPEREPZ(REPeat while Equal/

37、Zero)相等为零时重复操作前缀REPNEREPNZ(REPeat while Not Equal/Zero)不相等不为零进重复前缀IN(INput)   输入指令OUT(OUTput)   输出指令JMP(JuMP)   无条件转移指令JZ,JNZ,JS,JNS,JO,JNO,JP,JNP,JB,JNB,JBE,JNBE,JL,JNL,JLE,JNLE,JCXZ   条件转移指令LOOP     循环指令P70LOOPZLOOPE   为零相等时循环指令

38、LOOPNZLOOPNE   不为零不相等时循环指令CALL     子程序调用指令RET(RETun)   子程序返回指令CLC(CLear Carry)   进位位置0指令CMC(CoMplement Carry) 进位位求反指令SRC(SeT Carry)   进位位置1指令NOP(No OPeretion)   无操作指令HLT(HaLT)   停机指令OFFSET   返回偏移地址SEG 

39、0;   返回段地址EQU(=)   等值语句PURGE   解除语句DUP     操作数字段用复制操作符SEGMENT,ENDS   段定义指令ASSUME   段地址分配指令ORG     起始偏移地址设置指令$     地址计数器的当前值PROC,ENDP   过程定义语句NAME,TITLE,END   程序开始结束语句MACR

40、O,ENDM   宏定义指令JZ   OPR /结果为零转移 JNZ   OPR /结果不为零转移 JS   OPR /结果为负转移 JNS   OPR /结果为正转移 JO   OPR /溢出转移JNO   OPR /不溢出转移 JP   OPR /结果为偶转移JNP   OPR /结果为奇转移 JC   OPR /有进位转移 

41、;JNC   OPR /无进位转移AHAL=AX(accumulator):累加寄存器BHBL=BX(base):基址寄存器CHCL=CX(count):计数寄存器DHDL=DX(data):数据寄存器SP(Stack Pointer):堆栈指针寄存器BP(Base Pointer):基址指针寄存器SI(Source Index):源变址寄存器DI(Destination Index):目的变址寄存器IP(Instruction Pointer):指令指针寄存器CS(Code Segment)代码段寄存器DS(Data Segment):数据段寄存器SS(Stack Seg

42、ment):堆栈段寄存器ES(Extra Segment):附加段寄存器OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出.溢出时为1. SF sign Flag 符号标志 记录运算结果的符号.结果负时为1. ZF zero flag 零标志 运算结果等于0时为1.否则为0. CF carry flag 进位标志 最高有效位产生进位时为1.否则为0. AF auxiliary carry flag 辅助进位标志 运算时.第3位向第4位产生进位时为1.否则为0. PF parity flag 奇偶标志 运算结果操作数位

43、为1的个数为偶数个时为1.否则为0. DF direcion flag 方向标志 用于串处理.DF=1时.每次操作后使SI和DI减小.DF=0时则增大. IF interrupt flag 中断标志 IF=1时.允许CPU响应可屏蔽中断.否则关闭中断. TF trap flag 陷阱标志 用于调试单步操作.第1章              CPU资源和存储器1.1     &#

44、160;         寄存器组1.1.1                      寄存器组1.       16位寄存器组4个16位数据寄存器:AX、BX、CX、DX,每个又可分为2个8位寄存器2个变址寄存器:DI

45、和SI2个指针寄存器:SP和BP4个段寄存器:ES、CS、SS和DS1个标志寄标:FLAG1个指令指针寄存器:IP2.       32位寄存器组8个32位通用寄存器EAX、EBX、ECX、EDX、ESI、EDI、ESP、EBP,完全兼容16位寄存器。1.1.2                      通用

46、寄存器的作用通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。1.       数据寄存器数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。作用寄存器累加器(Accumulator),可用于乘,除,I/OEAX AX AL基址寄存器(Base Register),存储器指针EBX BX计数寄存器(Count Register)。在循环和字符串操作中,用ECX和CX来控制循环次数;在位操作中只能用CL来指明移动的位数。ECX CX CL数据寄存器(Data Re

47、gister)。在进行乘除运算时,它可作为默认的操作数参与运算,也可用于存放I/O的端口地址。EDX DX源变址寄存器:存储器指针、串指令中的源操作数指针ESI SI源目标变址寄存器::存储器指针、串指令中的目标操作数指针EDI DI基地址指针:存储器指针、存取堆栈的指针EBP BP栈顶指针:堆栈的栈顶指针ESP SP2.       变址和指针寄存器变址和指针寄存器主要用于存放存储单元在段内的偏移量,用它们可表达多种访问内存的寻址方式。变址和指针寄存器不可分割成8位寄存器。作为通用寄存器,它们也可存储算术逻辑运算的操作数和

48、运算结果。1.1.3                      段寄存器的作用32位处理器共有6个16位段寄存器CS、DS、ES、SS、FS、GS段寄存器段的名称及其含义CS代码段(Code Segment Register):存储程序指令序列的段DS数据段(Data Segment Register):存储程序指令执行时所需要数据的段SS堆栈段(Stack Segment R

49、egister):实施堆栈操作的段ES附加数据段(Extra Segment Register):存放程序执行时所需要的数据FS附加数据段:(80386及其以后CPU所增加的)GS附加数据段:(80386及其以后CPU所增加的)1.1.4                      专用寄存器的作用位标志位作用0CF(Carry Flag)进位标志:如果运算结果的最高位产生了一个

50、进位或借位,值为11  2PF(Parity Flag)奇偶标志:如果1的个数为偶数,则值为13  4AF(Auxiliary Carry Flag)辅助进位标志:在发生下列情况时值为11.       字操作时,低字节向高字节进位或借位2.       在字节操作时,低4位向高4位进位或借位5  6ZF(Zero Flag)零标志:运算结果是否为0,若为0,值为17SF(Sign Flag)符号

51、标志:反映运算结果的符号位,与运算结果的最高位相同。即结果为正则为0.8TF(Trap Flag)陷阱标志:置1时,CPU进入单步执行方式。这种方式主要用于程序的调试。9IF(Interrupt-enable Flag)中断允许标志:用来决定CPU是否响应其外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应其外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。IF=0时,CPU可以响应其外部的的可屏蔽中断发出的中断请求IF=1时,CPU不响应其外部的可屏蔽中断发出的中断请求10DF(Direction Flag)决定在串操作指令执行时有关指针寄存器发生调整的方向

52、。DF=0,SI(或DI)增加1、2、4DF=1,SI(或DI)减少1、2、411OF(Overflow Flag)溢出标志:用于反映有符号数算术运算所得结果是否溢出。溢出置1(溢出和进位不同,要注意)12IOPL(I/O Privilege Level)I/O特权标志:指定要求执行I/O指令的特权级。如果当前的特权级别在数值上小于等于IOPL的值,则可执行,否则发生一个保护异常。1314NT(Nested Task)嵌套任务标志:控制中断返回指令IRET的执行1.       当NT=0时,用堆栈中的值恢复EFLAGS C

53、S和EIP,执行常规的中断返回操作2.       当NT=1时,通过任务转换实现中断返回。15  16RF(Restart Flag)重启动标志:用来控制是否接受调试故障。RF=0时,表示“接受”调试故障。在成功执行完一条指令后,处理机把RF置为0,当接受到一个非调试故障时,处理机就把它置为1。17VM(Virtual 8086 Mode)虚拟8086方式标志:如果为1,则表示处理机处于虚拟8086方式下工作状态,否则处理机处于一般保护方式下的工作状态。18AC(Alignment Check)队列检查

54、标志:为1表示在一个不是字和双字的边界寻址一个字或双字。19VIF(Virtual Interrupt Flag)虚拟中断标志:对Pentium以上处理器有效。是在虚拟方式下中断标志的拷贝。20VIP(Virtual Interupt Pause)虚拟中断暂挂标志:用于多任务环境下,给操作系统提供虚拟虚拟中断标志和中断暂挂信息21ID(Identification)标识:指示Pentium及以上处理器支持指令“CPUID”。该指令可给出CPU的有关信息,如版本号和制造商等。22  23  24  25  26

55、60; 27  28  29  30  31  32   1.2               存储器的管理模式1.2.1                

56、;      16位微机的内存管理模式1.       存储器的分段计算机的内存单元是以“字节”为最小单位进行线性编址的。物理地址是一个无符号的二进制数。通常用十六进制来表示。16位CPU内部有20根地址线,其编码区间为00000H0FFFFFH,所以它可直接访问的物理空间为1MB(220)。16位微机把内存空间划分成若干个逻辑段,每个段的要求如下:l         

57、0; 逻辑段起始地址(简称段地址)必须是16的倍数,即最低4位二进制数必须全为0;l           逻辑段的最大容量为64KB;由此得出1MB内存最多可分成64K个段(65535个相互重叠的段),至少可分成16个互不重叠的段。2.       物理地址的形成方式物理地址段地址×16偏移量(即段首地址左移4位再加上偏移地址)汇编语言程序中,存储单元通常不是用其物理地址标识的,而是用逻辑地址标识

58、。逻辑地址的段地址由段寄存器给出,偏移量可由各类指针寄存器(IP SP BP或BX等)给出。3.       段寄寄存器的引用表2.3 段寄存器及其指针寄存器的引用关系vip访问存储器方式缺省的段寄存器可选用的段寄存器偏移量取指令CS IP堆栈操作SS SP一般取操作数DSCS ES SS有效地址串操作源操作数DS SI-index目标操作数ES DI使用指针寄存器BPSSCS DS ES有效地址l       &#

59、160;   取指令所用的段寄存器和偏移量一定是用CS和IP;l           堆栈操作所用的段寄存器和偏移量一定是SS和SP;l           串操作的源操作数和目标操作数所用的段寄存器和偏移量分别是DS和SI,ES和DI;4.       存储单元的内容l

60、0;          一个字节的内容是该字节单元内储存的二进制信息;l           一个字的内容是由该字地址所指向的单元及其后断一个单元的内容拼接而成;l           一个双字的内容是由该字地址所指向的单元及其后继3个单元的内容拼接而成;拼接“字内容”时,按“高

61、高低低”的原则来处理(这与我们平时的习惯不一样,要特别注意):内存地址12340H12341H12342H12343H12344H。内容(值)12H34H56H78H90H。在上图中:l           字节12340H的内容是12H,12341H的内容是34Hl           字12340H的内容是3412H,12341H的内容是5643H(“高低”)l 

62、          双字12340H的内容是78563412H,12341H的内容是90785634H(“高高低低”)1.2.2                      32位微机的内存管理模式提供了两种模式:实模式和保护模式1.    

63、   物理地址的计算方式l           实模式与16位微机一致。l           保护模式段地址长32位,其值可以不是16的倍数,每个段最大容量可达4GB。段寄存器的值是表示段地址的“选择器”(Selector),物理地址就是该段地址加上段内偏移。2.       

64、段寄存器的引用l           实模式下,段寄存器的值就是段地址。l           保护模式下,段寄存器的值不是段地址,是段地址的“选择器”,它间接指出一个32位段地址。l            3.    

65、   存储单元的内容与16位微机完全一致。习题1.       在16位CPU中,有哪些8位寄存器、16位寄存器?哪些16位寄存器可分为两个8位寄存器来使用?16位寄存器:AX BX CX DX DI SI BP SP ES CS SS DS FLAGS IP。其中AX BX CX DX可以分为两个8位寄存器。32位寄存器:除以上的E类寄存器外(均由32个二进制位组成),还增加了两个段寄存器: FS GS2.       同1

66、6位CPU相比,在32位CPU中,扩展了哪些寄存器?哪些寄存器的位数没变?所增加的寄存器是什么?扩展的寄存器主要是通用寄存器和指令指针寄存器,还有标志寄存器。段寄存器的位数没变,增加了两个段寄存器:FS GS3.       简述各通用寄存器的主要功能数据寄存器l           寄存器EAX AX AL通常称为累加器,用累加器运算可加快处理速度。累加器可用于乘、除、I/O等操作。l  

67、60;        寄存器EBX BX称为基地址寄存器,可作为存储器指针。l           ECX CX CL称为计数寄存器。在循环和字符串操作中,用ECX和CX来控制循环次数;在位操作中只能用CL来指明移动的位数。l           EDX和DX称为数据寄存器。在进行乘、除运算时,它可

68、作为默认的操作数参与运算,也可用于存放I/O端口地址。变址和指针寄存器l           SI和DI称为变址寄存器,它们可作为一般的存储器指针使用。寄存器名称寄存器号主要用途累加器EAX AX AL乘、除、I/O等操作,中间结果的缓存基地址寄存器EBX BX在数据段中作基地址指针计数器ECX CX CL循环计数器、重复操作计数器、移位操作计数器数据寄存器EDX DX字的乘、除运算,间接的输入输出源变址寄存器ESI SI存储器指针、串指令中的源操作数指针目标变址寄存器EDI DI存储

69、器指针、串指令中的目的操作数指针基地址指针EBP BP存储器指针、存取堆栈的指针栈顶指针ESP SP堆栈的栈顶指针4.       简述各段寄存器所指段的含义段寄存器段的名称及其含义CS代码段(Code Segment Register):存储程序指令序列的段DS数据段(Data Segment Register):存储程序指令执行时所需要数据的段SS堆栈段(Stack Segment Register):实施堆栈操作的段ES附加数据段(Extra Segment Register):存放程序执行时所需要的数据FS附加数据段

70、:(80386及其以后CPU所增加的)GS附加数据段:(80386及其以后CPU所增加的) 5.       IP/EIP寄存器的用作是什么?它是“计算机组成原理”课中的什么概念在CPU中的体现?它属于专用寄存器,叫指令指针寄存器,用来存放下次将要执行的指令在代码段的偏移量。当80386及其高档处理器处于保护模式时,其指令指针寄存器是32位的EIP。在实模式下,由于每个段的最大范围是64K,所以,EIP中的高16位肯定都为0,相当于只用其低16位来反映程序中指令的执行次序,这样,EIP低16位就与先前CPU中的IP作用相同。6.       在标志寄存器中,用于反映运算结果属性的标志位有哪些?它们每一位所表示的含义是什么?在Debug环境下用什么符号来表示之?见56页的表反映运算结果属性的标志位主要有:CF(进或借位置1)AF(字操作时,低字节向高字节进或借位,字节操作时,低4位向高4位进借位时置1)PF(运算结果中1的个数为偶时

温馨提示

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

评论

0/150

提交评论