- 1、本文档共48页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章-80X86的寻址方式和指令系统-4算术
(3) 用SF、OF标志,判断二个带符号数的大小 设:被比较二个带符号数分别为 : A、B 分四种情况讨论: ? A0, B0 ? A0, B0 ? A0, B0 ? A0, B0 四种情况讨论(操作数以8位为例): A B CMP A, B 结论 7 5 A0, B0 SF=0,OF=0 则:AB 5 7 情 况 A0, B0 SF=1,OF=0 则:AB -5 2 5 -7 -2 -5 -7 1 -7 -5 -5 -(-7) +2 A0,B0 SF=1,OF=0 则:AB A0,B0 SF=0,OF=0 则:AB -7 -(-5) -2 3 +127 -63 A0,B0 SF=1, OF=1 则:AB +127 -(-63) +190 4 -63 +127 A0,B0 SF=0,OF=1 则:AB -63 -(+127) -190 7 -5 2 分析以上四种情况得出如下结论: (1) OF=0 时: SF=0, 则:AB SF=1, 则:AB OF=1时: SF=1 , 则:AB SF=0,则:AB (2)O=S=0或S=O=1(相同)时: 记作 S?O=0 , 则:AB; O、S相异时: 记作 S?O=1 , 则: AB。 (3) S?O=0 同时ZF=0时, AB, 用JG/JNLE转移指令; S?O=1时, AB, 用JL/JNGE转移指令。 CMP指令应用举例:带符号数找最大值 若自BLOCK开始的内存缓冲区中,有100个16位带符号数。找出最大值。并存放到MAX单元中。 思路: 第一个数取出? ( AX), 取出第二个数(第二个字单元内容)与(AX)比较 : (AX)第二个数,不做交换, 否则,(第二个字单元内容) ? (AX)。 再取第三个数, … 经过99次比较,在(AX)中得到最大数。 … 编程: … MOV BX,OFFSET BLOCK MOV AX,[BX] INC BX INC BX MOV CX,99 AGAIN:CMP AX,[BX] JG NEXT ;(AX) (16d?(ds)+(BX))转NEXT MOV AX,[BX] NEXT: INC BX INC BX DEC CX JNE AGAIN MOV MAX,AX ;MAX单元存放最大值 … (三) 乘法指令 无符号的乘法指令MUL 带符号的乘法指令IMUL 乘法指令采用隐含寻址,隐含的是存放被乘数的累加器AL或AX及存放结果的AX,DX; 无符号数乘法指令 格式: MUL OPRD 不能是立即数 操作: OPRD为字节数 AL×OPRD AX OPRD为16位数 AX×OPRD DXAX 若运算结果的高位全为0或1,表示其为无效数据,OF=CF=0 无符号数乘法指令例 MUL BYTE PTR[BX] ┇ BX XXH AL ×XXH AX 带符号数乘法指令 格式: IMUL OPRD IMUL执行后,CF=OF=0,表示乘积值高位为符号扩展; CF=OF=1,表示积的高位存有有效值。 IMUL指令将OPRD视为带符号数,运算时若操作 数为负数,要先将操作数求补,并去掉符号位,运算后再将结果求补。 IMUL指令例 设:AL=FEH,CL=11H,求AL与CL的乘积。 若为无符号数,则 MUL CL 结果:AX=10DEH 若将两操作数看作有符号数,则: IMUL CL 指令执行后:AX=FFDEH=-34。 (四)除法指令 无符号除法指令 DIV OPRD(不能为立即数) 有符号除法指令 IDIV OPRD 若OPRD是字节数,则执行AX/OPRD 若O
文档评论(0)