汇编语言入门

mul指令

mul指令是乘法指令,乘法指令和 除法指令一样,分为8位和16位两种:

(1)两个相乘的数:两个相乘的数,要么都是8位,要么都是16位。如果是8位,一个默认放在AL中,另一个放在8位寄存器或内存字节单元中;如果是16位,一个默认在AX中,另一个放在16位寄存器或者内存字单元中。

(2)结果:如果是8位乘法,结果默认存放在AX中;如果是16位乘法,结果高位默认在AX中存放,低位在AX中存放。

格式如下:

标志寄存器

CPU内部的寄存器中,有一种特殊的寄存器(对于不同的处理机制,个数和结构都可能不同)具有以下三种作用。

(1)用来存储相关指令的某些执行结果

(2)用来为CPU执行相关指令提供行为依据

(3)用来控制CPU的相关工作方式

这种特殊的寄存器被称为标志寄存器。

ZF标志位

ZF标志位叫做零标志位,它用于记录相关指令执行后,其结果是否为0,如果结果为零,那么zf=1,如果结果不为0,那么zf=0

比如:

执行之后,结果为0,则zf=1。

PF标志位

PF标志位是奇偶标志位,它记录相关指令执行后,其结果的所有bit位中1的个数是否为偶数,如果1的个数为偶数,pf=1,如果为奇数,那么pf=0。

比如:

执行之后,结果为00001011B,其中1的个数为3个(奇数),则将PF置零。

SF标志位

SF标志位是符号标志位,它用于记录相关指令执行后,其结果是否为负,如果结果为负,sf=1,如果结果非负,sf=0。

关于有符号数和无符号数:

对CPU而言,数字是没有正负之分的,都是二进制数据,数字的正负都是认为规定的,如果你把这个数字当成有符号数,那么SF就有意义,如果你把数字当成是无符号数,那么SF标志位则没有意义。

CF标志位

CF标志位是进位标志位,一般情况下,在进行无符号数运算的时候,它记录了运算结果的最高有效位向更高位的进位值,或从更高位的进位值。

注意:CF位是对于无符号数而言

例:

OF标志位

OF标志位是溢出标志位,溢出是对于有符号数而言,比如8位有符号数,他能表示的范围是-128~127

执行完之后的值是197,很明显超出了al寄存器能表示的范围,这里就产生了溢出,那么OF位就置一。

最后

汇编语言入门分享系列基础到这里就结束了,如果你对汇编比较感兴趣可以深入学习一下王爽老师的《汇编语言(第三版)》。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20200126A0EEDR00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券