第3章80x86指令系统及汇编语言内容摘要:
令系统及汇编语言 该指令也可以用于任一寄存器与立即数或别的寄存器及任一内存操作数之间的比较 , 例如: CMP BX, 04FEH CMP DX, DI CMP CX, COUNT[ BP] 该指令还可以用于内存操作数与立即数及任一寄存器中操作数之间的比较。 例如: CMP DATA, 100 CMP COUNT[ SI] , AX CMP POINTER[ DI], BX 第 3章 80X86指令系统及汇编语言 综上所述 , 可以归纳出如下结论: 当没有溢出时 (OF= 0), 若 SF= 0, 则 AX> BX;若 SF= 1, 则 AX< BX。 当产生溢出时 (OF= 1), 若 SF= 0, 则 AX< BX;若 SF= 1, 则 AX> BX。 用逻辑表达式又可简化为: 若 OF SF= 0, 则 AX≥BX; 若 OF SF= 1,则 AX< BX。 第 3章 80X86指令系统及汇编语言 例如 , 若自 BLOCK开始的内存缓冲区中 , 有 100个带符号的数 , 希望找到其中最大的一个值 , 并将它放到 MAX单元中。 MOV BX, OFFSETBLOCK MOV AX, [ BX] INC BX INC BX MOV CX, 99 AGAIN: CMP AX, [ BX] JG NEXT MOV AX,[ BX] 第 3章 80X86指令系统及汇编语言 NEXT: INC BX INC BX DEC CX JNE AGAIN MOV MAX, AX HLT 第 3章 80X86指令系统及汇编语言 3. 乘法指令 乘法指令分为无符号数乘法指令和带符号数乘法指令两种。 (1)无符号数乘法指令 MUL 该指令的一般格式为: MUL OPRD; OPRD为源操作数 例: 字节乘以字节 MOV AL, LSRC BYTE;被乘数送 AL MUL RSRC BYTE;结果存于 AX中 第 3章 80X86指令系统及汇编语言 字乘以字 MOV AX, LSRC WORD;一个字送 AX MUL RSRC WORD;结果的高字节在 DX中 , 低字节在 AX中 字节乘以字 MOV AL, MUL BYTE;字节被乘数送入 AL CBW; AL中字节转换成 AX中的字 MUL RSRC WORD 第 3章 80X86指令系统及汇编语言 (2) 带符号数乘法指令 IMUL 这是一条带符号数的乘法指令 , 它和 MUL一样可以进行字节和字节 、 字和字的乘法运算。 结果放在 AX或 DX、 AX中。 当结果的高半部分不是结果的低半部分的符号扩展时 , 标志位 CF和 OF将置位。 该指令的一般格式为: IMUL OPRD 例:字节乘以字节 MOV AL, LSRC_BYTE;被乘数送 AL IMUL RSRC_BYTE 第 3章 80X86指令系统及汇编语言 4. 除法指令 8088有两条除法指令:无符号除法指令和带符号除法指令。 (1)无符号数除法指令 DIV 执行该指令 , 如果结果大于寄存器可以保存的值时 , 则产生 0型中断。 例: 字除以字节 MOV AX, NUMERATORWORD;被除数送 AX DIV DIVISORBYTE;商在 AL中 , 余数在 AH中 第 3章 80X86指令系统及汇编语言 字节除以字节 MOV AL, NUMERATORBYTE;被除数送 A1 CBW; AL中的字节扩展成 AX中的字 DIV DIVISORBYTE 字除以字 MOV AX, NUMERATORWORD CWD;把字转换成双字 DX、 AX DIV DIVISORWORD;商在 AX中 , 余数在 DX中 第 3章 80X86指令系统及汇编语言 (2)带符号除法指令 IDIV 该指令是带符号的除法指令。 执行除法后 , 余数符号与被除数相同 , 其他同 DIV指令。 IDIV指令一般格式为: IDIV OPRD 例:双倍字长除以字 MOV DX, NUMHIWORD;被除数高位字送 DX MOV AX, NUMLOWORD;被除数低位字送 AX IDIV DIVISORWORD[ SI] 第 3章 80X86指令系统及汇编语言 5. 调整指令 8088的调整指令主要用于十进制数的调整。 AAA——对 AL中 ASCII未压缩的十进制和进行调整; AAS——对 AL中 ASCII未压缩的十进制差进行调整; AAD——在除法指令前对 AX中 ASCII未压缩的十进制数进行调整; AAM——对 AX中两个 ASCII未压缩十进制相乘结果进行调整; DAA——对 AL中的两个压缩十进制数相加之和进行调整 , 得到压缩十进制和; DAS—— 对 AL中的两个压缩十进制数相减之差进行调整,得到压缩十进制差。 第 3章 80X86指令系统及汇编语言 逻辑运算和移位指令 逻辑运算和移位指令包括逻辑运算 、 移位和循环移位指令。 1. 逻辑运算指令 (1)NOT OPRD 该指令对操作数进行求反操作 , 然后将结果送回。 操作数可以是寄存器或存贮器的内容。 该指令对标志位不产生影响。 例如: NOT AL 第 3章 80X86指令系统及汇编语言 (2) AND指令 该指令对两个操作数进行按位相 “ 与 ” 的逻辑运算。 即只有参加相与的两位全为 “ 1”时 , 相 “ 与 ” 结果才为 “ 1”;否则相 “ 与 ” 结果为 “ 0”。 相 “ 与 ” 结果送回。 AND指令可以进行字节操作 , 也可以进行字操作。 AND指令的一般格式为: AND OPRD1, OPRD2 第 3章 80X86指令系统及汇编语言 例如: AND AL, 0FH AND AX, BX AND SI, BP AND AX, DATAWORD AND DX, BUFFER[ SI+ BX] AND DATAWORD, 00FFH AND BLOCK[ BP+ DI], DX 第 3章 80X86指令系统及汇编语言 (3)TEST指令 该指令的操作功能与 AND指令相同 , 其结果将反映在标志位上 , 但结果不送回 , 即 TEST指令将不改变操作数的值。 这条指令通常是在不希望改变操作数的前提下 ,用来检测某一位或某几位的状态。 TEST指令的一般格式为: TEST OPRD, im ; im是立即数 立即数中哪一位为 1,表示要对哪一位进行测试。 第 3章 80X86指令系统及汇编语言 例如 , 若要检测 AL中的最低位是否为 1, 且若为 1则转移。 在这种情况下可以用如下指令: TEST AL, 01H JNZ THERE … THERE: MOVBL, 05H … 第 3章 80X86指令系统及汇编语言 (4) OR指令 该指令对两个操作数进行按位相 “ 或 ” 的逻辑操作 , 即进行相 “ 或 ” 的两位中的任一位如果为 1时 , 则相 “ 或 ” 的结果为 1;如果两位都为 0时 , 其结果才为 0。 OR指令操作结果将送回。 OR指令允许对字节或对字进行相 “ 或 ” 运算。 OR指令使标志位 CF= 0, OF= 0;相 “ 或 ” 操作的结果反映在标志位 PF、 SF和 ZF上;对 AF标志位未定义。 OR指令的一般格式为: OR OPRD1, OPRD2 第 3章 80X86指令系统及汇编语言 例如: OR AL, 30H OR AX, 00FFH OR BX, SI OR BX, DATAWORD OR BUFFER[ BX] , SI OR BUFFER[ BX+ SI], 8000H 第 3章 80X86指令系统及汇编语言 (5) XOR指令 该指令对两个操作数进行按位 “ 异或 ” 操作 , 即进行 “ 异或 ” 操作的两位值不同时 , 其结果为 “ 1”;否则就为 0, 操作结果送回。 XOR指令的一般形式为: XOR OPRD1, OPRD2 第 3章 80X86指令系统及汇编语言 例如: XOR AL, 0FH XOR AX, BX XOR DX, SI XOR CX, CONNTWORD XOR BUFFER[ BX] , DI XOR BUFFER[ BX+ SI], AX 第 3章 80X86指令系统及汇编语言 2. 移位指令 8088有 3条移位指令: 算术左移和逻辑左移指令 SAL/ SHLOPRD, m 算术右移指令 SAROPRD, m 逻辑右移指令 SHROPRD, m (1)SAL/ SHL指令 这两条指令的操作结果是完全一样的。 每移位一次在右面最低位补一个 0, 而左面的最高位则移入标志位 CF, 如图 (a)所示。 第 3章 80X86指令系统及汇编语言 图 移位指令示意图 (a)SAL/ SHL; (b)SAR; (c)SHR 操作数M S B L S BCF操作数M S B L S BCF操作数M S B L S。第3章80x86指令系统及汇编语言
本资源仅提供20页预览,下载后可查看全文
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。
相关推荐
第31章开放经济:基本概念
:如果这种向国外借款所进行的投资能够带来良好的收益,那么对于债务就没有必要担心;当然,如果投资的收益不理想,则债务就不那么合意。 • 所以,对于这种情况,没有一个正确的答案。 正如个人会由于精打细算和挥霍浪费而负债一样,两者完全不同。 26 :实际与名义汇率 • 汇率( exchange rate)是用另一国货币表示的本国货币的价格。 币种 现汇买入价 币种 现汇买入价 2020,4,11
第32届全国大专院校统计盃
5. 本次比賽各隊若有教練參與比賽或陪同,需於檢錄時登記教練姓名,並領取教練證。 各賽事有規定教練之特定權利時,惟配有教練證之本人有該權力。 6. 兩隊伍若要進行互相檢視身份之動作,請於賽前由隊長或教練提出 (其餘人士不受理 ),比賽中途不得提出,賽後請依照申訴手續辦理。 申訴手續: 賽前一般爭議: 各校確認選手名單將會公布於官網,方便各校去查看每間學校的選手姓名(大會亦會執行此動作)
第3章数据表示、运算和预运算器部件
码不同 反码 难以用于加减运算,有循环进位问题 X (22n)X 1 X 0 Mod (22n) 0 X 1 定义: [X]反 = 反码的定义 实例: X1 = [ X ]反 = 010110 101001 00000 11111 返回 Company Logo 整数的编码表示 整数的 原码 反码 补码 表示 与定点小数的三种表示基本相同, 差别仅表现在小数点的位置,