FLAGS标志寄存器_第1页
FLAGS标志寄存器_第2页
FLAGS标志寄存器_第3页
FLAGS标志寄存器_第4页
FLAGS标志寄存器_第5页
免费预览已结束,剩余12页可下载查看

付费下载

下载本文档

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

文档简介

1、微机原理整理江苏大学计算机专业使用,本人私人资料;微机原理97FLAGS标志寄存器:6个状态标志位和 3个控制标志CF :进位标志位。当进行加减法运算时,若最高位向前有进借位CF=1,无 CF=0。PF:奇偶标志位。当运算结果的低8位中1的个数为偶数时PF=1,为奇数时 PF=0。AF :ZF :零位标志。当运算结果为零时ZF=1 ,运算结果不为零时ZF=0。辅助进位标志。D3向D4有借进位发生时 AF=1 ,无借进位发生 AF=0 。SF:符号标志位。当运算结果的最高位为1时SF=1,最高位为0时SF=0。OF=1,未溢出时 OF=0 。OP :溢出标志位。当运算结果超出了带符号数的范围,即

2、溢出时(D7 为符号位,说明: D7 , D6 , D5 , D4 , D3 , D2 , D1 , D0 )算数运算指令;加,减,乘,除有符号数的溢出:OF无符号数的溢出:CF指令对操作数的要求:单操作数指令中的操作数不允许使用立即数双操作数指令中,立即数只能作为源操作数,不允许源操作数和目的操作数都是存储器。1 ,加法运算指令(不允许段寄存器作为操作数和两个都是存储器)1) ADD普通加法指令(对全部6个状态标志位都会产生影响ADD OPRD1 , OPRD2;OPRD1+ OPRD2 送到OP RD1中去;不允许两个操作数都是存储器操作数例: MOV AL,7EHADD AL,5BH位带

3、符号数的最大值)程序执行后,AL=D9H ,即 11011001B,D9H>7FH(80F=1D9H<FFH(8 位无符号数的最大值)CF=0,ZF=O所有状态标志位 AF=0 , CF=0 , 0F=1 , PF=O , SF=1ADC带进位(CF)位的加法指令(对全部6个状态标志位都会产生影响 )ADC 0PRD1 , 0PRD2;0PRD1+ 0PRD2 +CF 送到 0PRD1 中去 不允许两个操作数都是存储器操作数例:设CF=1,写出以下指令执行后的结果M0V AL,7EHADC AL,OABH指令执行后:AL=7EH+0ABH+1=2AH, 且 CF=13)INC力口

4、1指令(不影响CF影响其它5个状态标志)INC 0PRD;0PRD+1 送至U 0PRD中去0PRD不能是立即数通常用于在循环程序中修改地址指针及循环次数2 ,减法指令(不允许段寄存器作为操作数和两个都是存储器)1) SUB不考虑借位的减法指令(对全部6个状态标志位都会产生影响 )SUB 0P RD1 ,0P RD2不允许两个操作数都是存储器操作数例:SUB AL,BP+SI;将SS:BP+SI单元的内容送到AL中去基址变址寻址:基址:BX或BP 变址:SI或DIDS ? BX变址SS ? BP变址SBB考虑借位的减法指令(对全部6个状态标志位都会产生影响SUB OPRD1 , OPRD2;将

5、 0PRD1-0PRD2-CF 送到0PRD1 中不允许两个操作数都是存储器操作数DEC减1指令(不影响CF影响其它5个状态标志)DEC OPRDOPRD不能是立即数NEG求补指令(对全部6个状态标志位都会产生影响 )NEG OPRD(求负数的绝对值);用 O-OPRDCF通常为1,除非OPRD为0OF通常为0,除非OPRD为80H (-128 )或8000H(-32768),执行后操作数不变, 但是OF为1 。5)CMP比较指令(仅影响6个状态标志位)CMP OPRD1 ,OPRD2OP RD1- OP RD2 ,结果不送回 OPRD1不允许两个操作数都是存储器操作数比较两个操作数的大小关系

6、。相等:ZF=1不相等:无符号数, CMP AX,BXCF=0,AX>BXCF=1,AX<BX有符号数,CMP AX,BXSF,OF相同,AX>BXSF,OF不同,AX<BXMUL BX;用 AX*BX 送到DX:AX中8位无符号数,试比较他们的大例:3-24在内存数据段从DATA开始的单元中存放了两个 小,并将大的数送 MAX单元、LEA BX,DATAMOVE AL,BXINC BXCMP AL,BXJNC DONEMOV AL,BXDONE:MOV MAX,ALHLT3,乘法指令MUL无符号乘法指令 (影响CF和OF)MUL OPRD隐含寻址方式,隐含目标操作数A

7、X(DX),源操作数由指令给出。字节乘法:OP RD*AL送到AX中字乘法:OP RD*AX送到DX : AX中这里,源操作数OPRD可以是8位或16位的寄存器或存储器。乘法指令要求两操作数字长相等,且不能为立即数。MUL BYTE P TRSI;AL*SI送到 AX 中MUL DL;用AL*DL送到AX中例:设 AL=0FEH,CL=11H,两数均为无符号数,求 AL与CL的乘积。MUL CL指令执行后:AX=10DEH,因AH中的结果不为零,故 CF=OF=1。乘积的高半部分不为 0,则CF=OF=1,代表AH或DX中包含乘积的有效数字高半部分为0,贝y CF=OF=04,除法指令DIV无

8、符号数除法指令(对6个标志位均无影响)DIV OPRD隐含寻址方式,隐含了被除数,除数OPRD不能为立即数除数OPRD 8位,则被除数 AX 16位字位拓展指令CBWAX/OPRD 放入 AL,AX%OPRD 放入 AH除数OPRD 16位,则被除数 DX (高):AX(低) 32 位字位拓展指令CWDDX:AX/OPRD 放入 AX , DX:AX%OPRD 放入 DX例:用除法指令计算 7FA2H/03DDHMOV AX,7FA2HMOV BX,03DDHCWD ;AX 扩展为 DX=0000H,AX=7FA2HDIV BX ;商=AX=0021H ,余数=DX=0025H333逻辑运算与

9、移位指令 1,逻辑运算指令除NOT指令外,其余4条指令对操作数的要求与 MOV指令相同,且使OF=CF=0,其余值不定1 ) AND逻辑“与”指令AND OPRD1 ,OPRD2 ;按位相与,仅 1 与 1=1作用之一:使目标操作数的某些位保持不变,把其他位清0AND AL,0FH ;将AL中的高4位清0 ,低4位保持不变 作用之二;使操作数不变,但影响 6个状态标志位,OF=CF=0AND AX,AX2) OR逻辑“或”指令OR OPRD1 , OPRD2作用之一:使目标操作数的某些位保持不变,将另外一些位置OR AL,20H;将AL中的D5位置1,其余不变作用之二:使操作数不变,但影响 6

10、个状态标志位,OF=CF=0OR AX,AX3)NOT逻辑“非”指令(对6个标志位均无影响)NOT OPRD;OPRD按位取反OPRD不能是立即数NOT WORD P TRSI4) XOR逻辑“异或”指令XOR OPRD1 , OPRD2 ;将两操作数按位进行“异或”异或操作:两操作数相同时为0,不同时为1作用:使某寄存器清零XOR AX,AX;使AX清零5)TEST测试指令TEST OP RD1,OPRD2 ;仅影响标志位,工作与 AND相同TEST AL , 02H;若AL中D1位为1,贝U ZF=0,否则ZF=12,移位指令(影响6个状态标志位)作用:实现寄存器操作数或内存操作数进行指定

11、次数的位移移动1次,指令直接给出,2位及以上,移动位数要放在 CL寄存器中。1 )非循环移位指令算数移位指令针对有符号数,逻辑移位指令针对无符号数SAL 和 SHL算数左移和逻辑左移执行完全相同的操作SAL OPRD , 1/CLSHL OP RD,1/CLCF,在最将OPRD中的内容左移一位或 CL位,每移一位,左边的最高位移入标志位低位补零。若移动一次,操作数的最高位和CF标志位状态不相同,则 OF=1状态相同,则OF=0(判断移位前后的符号位是否一致。)例:MOV AL,41HSHL AL,182H<FFH )执行结果为AL=82H,CF=0,OF=1M 若视AL为无符号数,则它没

12、有溢出(若视AL为有符号数,则溢出(82H>7FH(原先AL是41H,而后移位后吗,D7位从0变为了 1,产生了溢出。)例:把以DATA为首址的两个连续单元中的16位无符号数乘以10LEASI,DATAMOVAX,SISHLAX,1MOVBX,AXMOVCL,2SHLAX,CLADDAX,BXHLT将二进制无符号数左移一位相当于将这个数乘以左移两位,则乘以 4SHR逻辑右移指令SHR OP RD,1/CLOPRD顺序向右移1位或CL位,右边最低位移入CF,左边最高位补零移动一次,若移动后的最高位与起先的不同,则OF=1,如果相同,则 OF=0。例: MOV AL,82HSHR AL,1执

13、行结果:AL=41H,CF=0,OF=1每逻辑右移一位,相当于无符号的目标操作数除以2,可以用SHR指令完成把一个数除以2人1的运算SAR算数右移指令SAR OPRD,1/CLOPRD顺序向右移1位或CL位,右边最低位移入 CF,左边最高位保持不变不影响OF,AF例: MOV AL,82HSAR AL,1执行结果:AL=C1H,CF=0。2)循环移位指令ROL不带CF的循环左移指令ROL OPRD,1/CLOPRD向左移动1位或CL指定位,最高位移入 CF,同时再移入最低位构成循环例:MOV AL,82HROL AL,1执行结果:AL=O5H,CF=1,OF=1ROR不带CF的循环右移指令RO

14、R OPRD,1/CLOPRD向右移动1位CL指定位,最低位移入 CF,同时再移入最低高位构成循环例: MOV AL,82HROR AL,1执行结果:AL=41H,OF=1,CF=0RCL带CF的循环左移指令RCL OPRD,1/CLOPRD连同CF 一起向左移动1位或CL指定位,最高位进入CF,CF原来的值进入RCR 带CF的循环右移指令RCR 0PRD,1/CLOPED连同CF 一起向右移动1位或CL指定位,最低位进入 CF, CF中原来的值进入最咼位4.1汇编语言源程序机器语言:计算机硬件系统唯一能够直接理解和执行的语言 汇编语言:使用指令助记符,符号地址,标号和伪指令 等来书写程序4.

15、2伪指令421数据定义伪指令1.格式:变量名伪操作操作数,操作数常用的数据定义伪指令有5种(1) DB :定义变量为字节类型。变量中的每个操作数都占一个字节(OOFFH )。DB伪指令也常用来定义字符串。(2) DW :定义变量未字类型。DW伪指令后面每个操作数都占用2个字节。在内存中存放是,低字节低地址,高 字节咼地址。(3) DD :定义双字类型的变量。DD伪指令后面的每个操作数都占4个字节。在内存中存放时,同样是低字节低地址,咼字节咼地址。(4) DQ:定义四字类型的变量。(5) DT:定义十字节类型的变量。DT伪操作后面的每个操作数都为10个字节的压缩BCD数。2.操作数操作数(大于等

16、于一个):常数,表达式或字符串操作数的值不能超过由伪操作所定义的数据类型限定的范围例如:DB 操作数范围:0-255 (无符号数)-128+127 (有符号数)字符和字符串都必须放在单引号中。超过两个字符的字符串只能用 DB指令。DATA DB 11H,33HNUM DW100*5+88STR DB'HELLO!'DATA2 DW;为变量DATA2分配2个字节的空间,初66H11H始值为任意值。SUM DQ 0011223344556677HDATA2 DW 11H,22H,3344H由低到高存入最下面的最高77H00H55HOOH44H22H33H44H33H22H 11HOOHDATA1 DB 11H , 22H , 33H , 44H DATA2 DB ABCD '

温馨提示

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

评论

0/150

提交评论