概述
1、二进制加法基本指令
(1)ADD指令
格式:ADD DST,SRC
该指令把源操作数(SRC)指向的数据与目的操作数(DST)相加后,将结果放到目的操作数(DST)中,所执行的操作:(DST)ß(SRC)+(DST)
SRC和DST不能同时为存储器操作数和段寄存器,同时SRC和DST的数据类型要匹配,要同是字节或字。受影响的标志位有:OF,SF,ZF,AF,PF,CF。
(2)ADC指令
格式:ADC DST,SRC
所执行的操作:(DST)ß(SRC)+(DST)+CF 了解清楚进位是怎样加的
该指令把两个操作数(SRC和DST)相加以后,再加上进位标志CF,将结果放到目的操作数(DST)中。受影响的标志位有:OF,SF,ZF,AF,PF,CF。ADC指令多用于多精度数据相加。
2、二进制减法基本指令
(1)SUB指令
格式:SUB DST,SRC
所执行的操作:(DST)ß (DST)-(SRC)
该指令把源操作数(SRC)指向的数据与目的操作数(DST)相减后,将结果放到目的操作数(DST)中,SRC和DST不能同时为存储器操作数和段寄存器(,同时SRC和DST的数据类型要匹配,要同是字节或字。受影响的标志位有:OF,SF,ZF,AF,PF,CF。
(2)SBB指令
格式:SBB DST,SRC
(DST)ß (DST)-(SRC)-CF 了解清楚进位是怎样减的
该指令把两个操作数(SRC和DST)相减以后,再减去CF,将结果放到目的操作数(DST)中。受影响的标志位有:OF,SF,ZF,AF,PF,CF。SBB指令多用于多精度数据相加。
(1)编写程序,实现长度为2字的两个多精度数相减。
(2)编写程序,实现一个长度为3字的多精度数和一个长度为2字的多精度数相加减。
【ch2ex1】
一、源代码
DATA SEGMENT
DATA1 DW 8953H,9B95H ;表示数据9B958953h
DATA2 DW 1211H,2134H ;表示数据21341211h
RESULT DW 2 DUP(?) ;存放多字节相减的结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,DATA1
MOV DX,DATA1+2
SUB AX,DATA2 ;低字部分相减
SBB DX,DATA2+2 ;高字部分带进位相减
MOV RESULT,AX ;存放低字部分相减结果
MOV RESULT+2,DX ;存放高字部分相减结果
CODE ENDS
END START
二、 汇编结果
低位相加:7742(AX),高位相加:7A61(DX)
【ch2ex2】
二、源代码
DATA SEGMENT
DATA1 DW 5311H,8A13H,2122H ;表示数据21228A135311H
DATA2 DW 4783H,9526H ;表示数据95264783H
RESULT DW 2 DUP(?) ;存放多字节相加结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,DATA1
MOV DX,DATA1+2
MOV BX,DATA1+4
ADD AX,DATA2 ;低字部分相加
ADC DX,DATA2+2 ;次高字部分带进位相加
ADC BX,DATA2+4 ;高字部分带进位相加
MOV RESULT,AX ;存放低字部分相加结果
MOV RESULT+2,DX ;存放次高字部分相加结果
MOV RESULT+4,BX ;存放高字部分相加结果
CODE ENDS
END START
三、汇编结果
低位相加:AX(9A94) 次高位相加:DX(1F39) 高位相加:BX(2123)
【ch2ex3】
二、源代码
DATA SEGMENT
DATA1 DW 5795H,8A89H,2122H ;表示数据21228A895795H
DATA2 DW 4783H,7822H ;表示数据78224783H
RESULT DW 2 DUP(?) ;存放多字节相减结果
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,DATA1
MOV DX,DATA1+2
MOV BX,DATA1+4
SUB AX,DATA2 ;低字部分相减
SBB DX,DATA2+2 ;次高字部分带进位相减
SBB BX,DATA2+4 ;高字部分带进位相减
MOV RESULT,AX ;存放低字部分相减结果
MOV RESULT+2,DX ;存放次高字部分带进位相减结果
MOV RESULT+4,BX ;存放高字部分相减结果
CODE ENDS
END START
一、 汇编结果
低位相减:AX(1012)次高位相减:DX(1267) 高位相减:BX(2122)
而进行hi
最后
以上就是酷酷冰棍为你收集整理的二进制加减法编程的全部内容,希望文章能够帮你解决二进制加减法编程所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复