微机原理及应用实验 |
您所在的位置:网站首页 › 计算机组成原理与接口技术 › 微机原理及应用实验 |
多字节加减法程序
前置基础知识加法运算指令普通加法指令ADD格式操作
带进位位的加法指令ADC格式操作
加1指令INC格式操作
减法运算指令不考虑借位的减法指令SUB格式操作
考虑借位的减法指令SBB格式操作
减1指令DEC格式操作
控制寄存器 IP,FLAGSCF——进位标志位PF——奇偶标志位AF——辅助进位标志位ZF——零标志位SF——符号标志位OF——溢出标志位
加法指令详解MOV AX,0A268HMOV SI,9D1CHADD AX,SIADD AL,30HADC AX,0FFFFH
前置基础知识
上一个内容讲解: 微机原理及应用实验——MOV指令的使用详解本文用的调试环境: 微机原理及应用实验——汇编环境MASM的使用 加法运算指令 加法指令对操作数的要求与MOV指令相同段寄存器不能作为加法指令的操作数 普通加法指令ADD 格式ADD OPRD1,OPRD2 操作OPRD1+OPRD2并把结果赋给OPRD1 ADD指令的执行对全部6个状态标志位都产生影响 带进位位的加法指令ADC 格式ADC OPRD1,OPRD2 操作OPRD1+OPRD2+CF并把结果赋给OPRD1 ADC指令多用于多字节数相加,使用前要先将CF清零。 加1指令INC 格式INC OPRD 操作OPRD+1并把结果赋给OPRD INC指令不影响CF标志位,只影响AF、OF、PF、SF、ZF标志位 常用于在程序中修改地址指针及循环次数等 减法运算指令减法指令对操作数的要求与对应的加法指令相同 不考虑借位的减法指令SUB 格式SUB OPRD1,OPRD2 操作OPRD1- OPRD2并把结果赋给OPRD1 对标志位的影响与ADD指令相同 考虑借位的减法指令SBB指令格式、对操作数的要求、对标志位的影响与SUB指令完全一样 格式SUBB OPRD1,OPRD2 操作OPRD1- OPRD2- CF并把结果赋给OPRD1 SBB指令多用于多字节减法运算,使用前要先将CF清零。 减1指令DEC 格式DEC OPRD 操作OPRD - 1并把结果赋给OPRD 指令对操作数的要求与INC相同 指令常用于在程序中修改循环次数 控制寄存器 IP,FLAGSIP(Instruction Pointer):指令指针寄存器,用来存放代码段中指令的偏移地址。在程序运行中,IP与CS联用,以确定下一条指令的物理地址。该寄存器作为专用寄存器,一般不能用来存放其他数据 FLAGS:标志寄存器,主要用于反应处理器的状态和运算结果的某些特征,它是16位寄存器,但只使用其中的9位,这9位包含6个状态标志位,3个控制标志。 CF——进位标志位当进行加(减)法运算时,若最高位向前有进(借)位,则CF=1,否则CF=0 PF——奇偶标志位当运算结果的低8位中1的个数为偶数时PF=1,为奇数时PF=0 AF——辅助进位标志位在加(减)法操作中,D3向D4有进位(借位)时,AF=1,否则AF=0 DAA指令和DAS指令测试这个标志位,以便在BCD加法或减法之后调整AL中的值 ZF——零标志位当运算结果为零时,ZF=1,否则ZF=0 SF——符号标志位当运算结果的最高位为1时SF=1,否则SF=0 OF——溢出标志位当算数运算的结果超出了带符号数的范围,即溢出时OF=1,否则OF=0 加法指令详解运行下列指令,并观察6个状态标志位的结果: MOV AX,0A268H MOV SI,9D1CH ADD AX,SI ADD AL,30H ADC AX,0FFFFH MOV AX,0A268H运行前,ax为0000H,ip指向cs:0100 运行该命令,给ax幅值,此时ax的值为A268H 运行该指令后,给si赋值,si的值变为9D1CH 运行该指令前: CF=0ZF=0SF=0OF=0PF=0AF=0运行该指令后,ax的值和状态标志位都发生改变: 状态标志位变为: CF=1,运算过程有进位,所以SF被置1ZF=0,运算结果不为0,ZF保持为0SF=0,运算结果最高位不为1,SF保持为0OF=1,运算结果为5位数,AX无法存下,故溢出,所以OF被置1PF=1,运算结果的低8位中1的个数为4,即偶数,所以PF被置1AF=1,运算时,D3向D4有进位,故AF被置1 ADD AL,30H该指令将AL的值增加30H: 状态标志位变为: CF=0,运算过程无进位,CF保持为1ZF=0,运算结果不为0,ZF保持为0SF=1,运算结果最高位为1,SF置1OF=0,运算结果为2位数,AL可以存下,无溢出,所以OF保持为0PF=1,运算结果的低8位中1的个数为4,即偶数,所以PF被置1AF=0,运算时,D3向D4无进位,故AF保持为0 ADC AX,0FFFFHADC是带进位位的加法指令,执行ADC AX,0FFFFH这一指令后,ax在原来值的基础上加FFFFH,再加上CF的值: 状态标志位变为: CF=1,运算过程有进位,CF置1ZF=0,运算结果不为0,ZF保持为0SF=0,运算结果最高位为0,SF保持为0OF=0,运算结果为5位数,AX无法存下,有溢出,但是,运算结果的最高位与原来的最高位一致,所以OF保持为0PF=0,运算结果的低8位中1的个数为4,即偶数,所以PF被置1AF=1,运算时,D3向D4有进位,故AF置1 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |