摘要:
一、数据传输指令1. 通用数据传送指令.MOV(MOVe) 传送字或字节.MOVS(MOVe String)串传送指令MOVSX先符号扩展,再传送.MOVZX先零扩展,再传送.PUSH把字压入堆栈.POP把字弹出堆栈.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(eXCHanG
阅读全文
posted @ 2013-03-24 19:36
loopever
阅读(1786)
推荐(0)
编辑
摘要:
转载自:http://hi.baidu.com/hypkb/blog/item/5031f781ea8ecad09023d96b.html汇编语言笔记-第10章 call和ret指令2009-02-02 17:59ret指令用栈中的数据,修改IP的内容,从而实现近转移;CPU执行ret指令时,进行下面两步操作:(1)(IP)=((ss)*16+(sp))(2)(sp)=(sp)+2相当于进行:pop IP?retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移;CPU执行retf指令时,进行下面两步操作:(1)(IP)=((ss)*16+(sp))(2)(sp)=(sp)+2(3)(C
阅读全文
posted @ 2013-03-24 19:35
loopever
阅读(182)
推荐(0)
编辑
摘要:
首先,80386以及80386以后的CPU都是32位的纯32位windows是不能进入实模式的,重启以后到载入WINDOWS以前都是实模式,也许你会说windows98不是是可以不用重启机器直接进入到纯DOS(实模式)下么首先,98是个16位和32混编的系统,所以不稳定,但对游戏支持甚好,而且其内核是建立在16位上的(你要是搞过Win32编程就会有所了解),这样的话进入DOS很方便,或者在DOS下一条win命令就可以进入WINDOWS...但是从NT开始就不行了,2000/XP都是建立在纯32位(NT开始)内核上的,所以很稳定,但是如果不重新启动到DOS下是不能进行实模式操作的,但是考虑程序的
阅读全文
posted @ 2013-03-24 19:32
loopever
阅读(406)
推荐(0)
编辑
摘要:
任务内相同特权级的转移:段间直接转移和段间直接调用:1.检查目标地址指针内的选择子指示的描述符是否为空,目标代码段描述符不能为空描述符,即该选择子的高14位不能为02.由选择子内的TI位(第2位)决定是从GDT还是从LDT中读出目标代码段的描述符3.检查描述符类型是否正确4.普通代码段,要求CPL=DPL,RPL<=DPL;一致代码段,要求CPL>=CPL5.目标代码段描述符中的P位必须为16.把目标代码段描述符中的段基址、段限、属性装入CS的高速缓冲寄存器中7.检查目标地址的偏移是否越过目标代码段的段界限,这也是不允许的,即目标地址的偏移不允许越过该代码段8.装入指令指针寄存器E
阅读全文
posted @ 2013-03-24 19:31
loopever
阅读(309)
推荐(0)
编辑
摘要:
保护模式 (Protected Mode,或有时简写为 pmode) 是一种 80286 系列和之后的 x86 兼容 CPU 操作模式。保护模式有一些新的特色,设计用来增强 多工 和系统稳定度,像是 内存保护,分页 系统,以及硬件支援的 虚拟内存。大部分的现今 x86 操作系统 都在保护模式下运行,包含 Linux、FreeBSD、以及 微软 Windows 2.0 和之后版本。 另外一种 286 和其之后 CPU 的操作模式是 真实模式,一种向前兼容且关闭这些特色的模式。设计用来让新的芯片可以执行旧的软件。依照设计的规格,所有的 x86 CPU 都是在真实模式下开机来确保传统操作系统的向..
阅读全文
posted @ 2013-03-24 19:30
loopever
阅读(341)
推荐(0)
编辑
摘要:
实模式与保护模式摘自ITWIKI,为我和还没搞明白真实模式保护模式的XDJM们真实模式Intel 8086和8088有14个16位缓存器。其中四个(AX, BX, CX, DX)是通用目的(尽管每个缓存器有额外的目的;举个例子:CX可以被用来当作loop(循环)指令的计数器。每个缓存器可以被当成两个分开的字节存取(因此BX的高位可以被当成BH以及低位BL)。除了这些缓存器, 还有四个区段缓存器(CS、DS、SS、ES)。他们用来产生内存的寻址。还有两个指针缓存器(SP是指向堆栈的底部, BP可以用来指向堆栈或内存的其它地方)。两个指针缓存器(SI和DI)可以用来指向数组的内部。最后,有旗标缓存
阅读全文
posted @ 2013-03-24 19:29
loopever
阅读(258)
推荐(0)
编辑