/*权展开式 原来是这样 FF -> 1111 1111*/ 【本章重点】 1.14个16位寄存器,8个8位寄存器 2.8086/8088七种寻址方式 3.8086/8088各种指令 汇编和cpu的关系...(有猫腻~~) 一、寄存器组 //通用的寄存器 AX BX CX DX (十六位)//数据寄存器 SP BP(指针)// SI DI (变地址)//变址和指针寄存器 //控制 IP[指令指针] FLAG[标志寄存器](控制寄存器) //段寄存 CS[代码] DS[数据] SS[堆栈] ES[附加](段寄存器) 看图1.
【...概述...】 1.通用寄存器 传送,暂时存数据,保存算术逻辑运算中的操作数和运算结果[AX BX CX DX SP BP SI DI ] ___a.数据寄存器 AX BX CX DX 保存操作数和运算的结果//可拆 AH AL BH BL ..... AX->AH AL 其中AL可以用作累加器 BX->BH BL 其中BX基址寄存器 CX->CH CL 其中CX常用语循环 CL移位 DX->DH DL 其中DX用作32位乘除法用存放被除数的16位,,余数也用它~ ___b.变址和指针寄存器 SP BP SI DI主要是存放单元地址的偏移,或者存储某个单元地址的偏移,即作为存储器(短)指针使用。 当做通用寄存器的时候可以保存16位算数逻辑运算的结果,有时候运算结果就是要存储单元地址的偏移~..{好笼统 不懂...} SP BP 堆栈用 SI DI 存放偏移地址用 2.段寄存器 CS 代码段 DS 数据段 ES 附加段 SS 堆栈段 3.控制寄存器 ___a.指令指针 IP 下次要执行的代码偏移就是IP ___b.标志寄存器 9个很牛的标志 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 O D I T S Z A P C F F F F F F F F F //还是图比较好(图2):
//运算结果的标志 A.进位标示CF 主要用于反映运算是否产生进位或者借位//相加有进位,或者有减法有借位 他都会变成1否则为0 B.零标志ZF 用于反映运算结果是否为0,//如果结果为0,,,那么ZF为1,否则为0; C.符号标志SF 用于反映运算结果的符号位//SF与运算结果的最高位相同 ,,,,如果运算结果的最高位为1,则SF被置为1,,否则被0; //倒是方便了不用十六进制转换为二进制看了... D.溢出标志OF 用于反映有符号数加减运算是否引出溢出,//,如果运算结果超出了8位或16位有符号数的表示范围,则在字节运算时 // -128~127 -32768~32767 //,称为溢出。如果溢出则OF为1 否则0 E.奇偶标志PF 奇偶标志的数//若果1的个数是偶数,,则PF是1,否则是0 F.辅助进制标志AF 在["字"/"半字"]操作的时候,如果发生 [低半字节向高半字节/低字向高字] 进位或借位(就是加减法的时候);//辅助标志AF被置1,否则是0 //状态控制标志 G.方向标志DF DF 为1按减的方式 DF为0按加的方式//虽然不懂~但是要先记住 H.中断允许标志IF 中断允许标志决定CPU是否响应外部可屏蔽中断请求//,当IF为1时,CPU能够响应外部的可屏蔽中断请求 //,当IF为0时候,CPU不响应外部的中端请求~ I.追踪标志TF 当TF被置1后,CPU进入单步中断方式。//所谓单步中断方式就是在一条指令执行后,产生一个中断,,,,用于调试 //(图3): 二、存储器分段和地址的形成 1.存储空间的地址和内容 存储器里面以"字"为单元(ff ff), 每个单元给一个存储器 //从0开始每次加1 ,,,无符号数 书写时十六进制 //16位进制2进制表示是 {2^16=0~65535} 一共65536个; //65536就是64K; 黑框表示方法: 0000 0001 0002 0003 0004 .... 000A 000B 000C 000D 000E 000F 0010 0011 0012 ....... 001A 001B 001C 001D 001E 001F .............. FFE0 FFE1 .......... ..... .... ... ... FFEE FFEF FFF1 FFF2 .......... ..... .... ... ... FFFE FFFF //一共65536个地址 就是2的16次方就是 16位寻址地址 (以后上图..)
收货: 各种标志 各种段~~~ {1.14个16位寄存器,8个8位寄存器}