二进制加减法编程

1、二进制加法基本指令

1ADD指令

格式:ADD DSTSRC

该指令把源操作数(SRC)指向的数据与目的操作数(DST)相加后,将结果放到目的操作数(DST)中,所执行的操作:(DST)ß(SRC)+(DST)

SRCDST不能同时为存储器操作数和段寄存器,同时SRCDST的数据类型要匹配,要同是字节或字。受影响的标志位有:OFSFZFAFPFCF

2ADC指令

格式:ADC DSTSRC

所执行的操作:(DST)ß(SRC)+(DST)CF     了解清楚进位是怎样加的

该指令把两个操作数(SRCDST)相加以后,再加上进位标志CF,将结果放到目的操作数(DST)中。受影响的标志位有:OFSFZFAFPFCFADC指令多用于多精度数据相加。

2、二进制减法基本指令

1SUB指令

格式:SUB DSTSRC

所执行的操作:(DST)ß (DST)(SRC)

该指令把源操作数(SRC)指向的数据与目的操作数(DST)相减后,将结果放到目的操作数(DST)中,SRCDST不能同时为存储器操作数和段寄存器(,同时SRCDST的数据类型要匹配,要同是字节或字。受影响的标志位有:OFSFZFAFPFCF

2SBB指令

格式:SBB DSTSRC

(DST)ß (DST)(SRC)CF     了解清楚进位是怎样减的

该指令把两个操作数(SRCDST)相减以后,再减去CF,将结果放到目的操作数(DST)中。受影响的标志位有:OFSFZFAFPFCFSBB指令多用于多精度数据相加。

 


例:

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

二、 汇编结果

低位相加:7742AX),高位相加:7A61DX

 

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

三、汇编结果

  低位相加:AX9A94) 次高位相加:DX1F39)  高位相加:BX2123

 

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

一、 汇编结果

  低位相减:AX1012)次高位相减:DX1267) 高位相减:BX2122

而进行hi 

猜你喜欢

转载自blog.csdn.net/qq_38855717/article/details/80317108