### 汇编语言指令详解 #### AAA:未组合的十进制加法调整指令 - **指令格式**:AAA - **功能描述**:在进行两个组合的十进制数(位于AL寄存器中)相加之后,对结果进行调整,使其成为未组合的十进制数,并将调整后的结果存放在AX寄存器中。 - **BCD码解释**:十进制数可以用四位二进制数表示,这种表示方式被称为BCD码(Binary-Coded Decimal)。如果一个8位字节中只使用低4位来存放一位BCD码,高4位置0,则称这样的BCD码为未组合的BCD码。 - **调整操作**: - 若(AL) and 0FH > 9 或 AF = 1,则调整过程为:(AL) <-- (AL) + 6, (AH) <-- (AH) + 1, AF = 1, CF <-- AF, (AL) <-- (AL) and 0FH。 #### AAD:未组合十进制数除法调整指令 - **指令格式**:AAD - **功能描述**:在执行除法指令DIV之前,对AX寄存器中的两个未组合的十进制数进行调整,以使得能通过DIV指令实现两个未组合的十进制数之间的除法运算。结果为未组合的十进制数,其中商保存在AL寄存器中,余数保存在AH寄存器中。 - **示例**: - MOV BL, 5 - MOV AX, 0308H - AAD - (AL) <-- 1EH + 08H = 26H, (AH) <-- 0 - DIV BL - 商 = 07H --> AL, 余数 = 03H --> AH。 #### AAM:未组合十进制数乘法调整指令 - **指令格式**:AAM - **功能描述**:对两个未组合的十进制数相乘后的结果(位于AX寄存器中)进行调整,使其成为一个未组合的十进制数并存储在AL寄存器中。 - **调整方法**:两个未组合的十进制数字节相乘,由于0到9之间的数相乘最大积为81,为了得到正确的结果,应进行以下调整: - 乘积:(AH) <-- (AL) / 10 - (AL) <-- (AL) MOD 10 - **使用场景**:此指令应在MUL指令之后使用。乘积的两位十进制结果中,高位部分存放在AH寄存器中,低位部分存放在AL寄存器中。AH的内容是MUL指令的结果除以10的商,即(AL) / 10;而最终的AL内容则是乘积被10整除的余数(即个位数)。 #### AAS:未组合十进制减法调整指令 - **指令格式**:AAS - **功能描述**:对两个未组合的十进制数相减后的结果(位于AL寄存器中)进行调整,使其成为一个未组合的十进制数并仍存放在AL寄存器中。 - **影响标志位**:此指令会影响标志位CF及AF。 - **调整操作**: - 若(AL) and 0FH > 9 或 AF = 1,则调整过程为:(AL) <-- (AL) - 6, (AH) <-- (AH) - 1, CF <-- AF, (AL) <-- (AL) and 0FH。 - 否则(AL) <-- (AL) and 0FH。 #### ADC:带进位加法指令 - **指令格式**:ADC OPRD1, OPRD2 - **功能描述**:OPRD1 <-- OPRD1 + OPRD2 + CF - **操作数说明**: - OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,也可以是任意一个存储器操作数。 - OPRD2为立即数或任意一个通用寄存器操作数。立即数只能用于源操作数。 - **限制条件**: - 允许OPRD1和OPRD2同时为寄存器,或者其中一个为寄存器而另一个为存储器操作数,但不允许两者同时为存储器操作数。 - **影响标志位**:执行该指令会更新CF、SF、OF、PF、ZF、AF等标志位。 #### ADD:加法指令 - **指令格式**:ADD OPRD1, OPRD2 - **功能描述**:两数相加 - **操作数说明**: - OPRD1为任一通用寄存器或存储器操作数,可以是任意一个通用寄存器,也可以是任意一个存储器操作数。 - OPRD2为立即数或任意一个通用寄存器操作数。立即数只能用于源操作数。 - **限制条件**: - 允许OPRD1和OPRD2同时为寄存器,或者其中一个为寄存器而另一个为存储器操作数,但不允许两者同时为存储器操作数。 - **影响标志位**:执行该指令会更新CF、SF、OF、PF、ZF、AF等标志位。与ADC指令相同。
剩余22页未读,继续阅读
- 粉丝: 0
- 资源: 2
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助