第三章程序设计的基本技术 同高级语言一样,汇编语言程序的基本结构 有:顺序程序,分支程序,循环程序。 解题的基本步骤也基本相同
第三章 程序设计的基本技术 同高级语言一样,汇编语言程序的基本结构 有:顺序程序,分支程序,循环程序。 解题的基本步骤也基本相同
§31顺序程序设计 以直线方式一条指令接着一条指令顺序执 行。常用的算术运算大多可用顺序程序来解决。 所以先介绍乘除指令与十进制运算指令 乘除指令 对加减运算,带符号数和不带符号数运算 指令相同(只要字节够);对于无符号,关心 CF,可知结果正确与否;对带符号数,关心 OFSF可知结果正确与否,且知正负。但乘除 运算则不行,为此8088提供了带符号与不带 符号的乘除指令
§3.1 顺序程序设计 以直线方式一条指令接着一条指令顺序执 行。常用的算术运算大多可用顺序程序来解决。 所以先介绍乘除指令与十进制运算指令。 一 . 乘除指令 对加减运算,带符号数和不带符号数运算 指令相同(只要字节够);对于无符号,关心 CF,可知结果正确与否;对带符号数,关心 OF,SF 可知结果正确与否,且知正负。但乘除 运算则不行,为此8088提供了带符号与不带 符号的乘除指令
1.无符号数乘法( MULtiply) 格式: MUL SRC 2.带符号数乘法( Signed Integer MULtiply 格式: IMUL SRO 操作:字节运算L*(SRC)→AX 字运算AX*(SRC)→DX:AX 有一个操作数隐含,即被乘数和乘积都在 规定的寄存器中,源操作数只能是寄存器或 存储器,且类型明确,不能为立即数 当CF=OF=1时,不表示进位和溢出,而 表示乘积已不是8位或16位,即高位为有效
1. 无符号数乘法(MULtiply) 格式:MUL SRC 2. 带符号数乘法(Signed Integer MULtiply) 格式: IMUL SRC 操作: 字节运算 AL * (SRC) →AX 字运算 AX * (SRC) →DX:AX 有一个操作数隐含,即被乘数和乘积都在 规定的寄存器中,源操作数只能是寄存器或 存储器,且类型明确,不能为立即数. 当 CF=OF=1 时,不表示进位和溢出,而 表示乘积已不是8位或16位,即高位为有效 位
例。 IMUL BX;AX大BX→DX:AX MUL25× IMUL [SI X IMUL BYTE PTR [SI: AL X(ISID-AX 两指令的操作相同,只是操作数是否带符号, 但对同一操作数进行操作,结果不一致。∵应视 操作对象,正确选择指令
例 . IMUL BX ; AX*BX→DX:AX MUL 25 ╳ IMUL [SI] ╳ IMUL BYTE PTR [SI] ; AL*([SI]) →AX 两指令的操作相同,只是操作数是否带符号, 但对同一操作数进行操作,结果不一致。∴应视 操作对象 ,正确选择指令
例1, MOV AL,0B4H;视做带符号数→-76 MoBL,11H;视做带符号数→17 IMUL BL ;AX=-76*17=-1292=0FAF4H←补码 ;CF=OF=1表示AH内容为有效位 例2. MOV AL,0B4H;视B4H为无符号→180 MOV BL,11H,视11为无符号数→17 MUL BL AX=180*17=3060=0BF4H
例1 . MOV AL , 0B4H ; 视做带符号数→ ﹣76 MOV BL , 11H ; 视做带符号数→ 17 IMUL BL ;AX=﹣76*17=﹣1292=0FAF4H 补码 ;CF=OF=1 表示AH内容为有效位 例2. MOV AL , 0B4H ; 视B4H为无符号→180 MOV BL , 11H ; 视11H为无符号数 →17 MUL BL ; ; AX=180*17=3060=0BF4H