我是靠谱客的博主 酷酷冰棍,最近开发中收集的这篇文章主要介绍二进制加减法编程,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

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 

最后

以上就是酷酷冰棍为你收集整理的二进制加减法编程的全部内容,希望文章能够帮你解决二进制加减法编程所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(60)

评论列表共有 0 条评论

立即
投稿
返回
顶部