任意两个20位十进制数相加的例程

合集下载

两个十进制数相加的汇编程序

两个十进制数相加的汇编程序

两个十进制数相加的汇编程序汇编语言是一种底层的编程语言,用于编写计算机的指令集。

在汇编语言中,可以使用指令来执行加法操作。

下面是一个用汇编语言编写的程序,用于将两个十进制数相加。

1. 首先,我们需要将两个十进制数保存在内存中。

假设第一个数为A,第二个数为B。

我们可以使用数据段来定义这两个数,并将它们存储在内存中的某个位置。

例如,我们可以将A存储在内存的地址1000处,将B存储在内存的地址1004处。

2. 接下来,我们需要使用寄存器来执行加法操作。

我们可以使用通用寄存器来保存结果。

假设我们将结果保存在寄存器AX中。

3. 首先,将A加载到AX寄存器中。

我们使用MOV指令将A从内存加载到AX 寄存器。

指令为:MOV AX, [1000]。

这将从内存地址1000处读取数据,并将其存储在AX寄存器中。

4. 接下来,将B加载到BX寄存器中。

我们使用MOV指令将B从内存加载到BX寄存器。

指令为:MOV BX, [1004]。

这将从内存地址1004处读取数据,并将其存储在BX寄存器中。

5. 现在,我们需要将AX和BX寄存器中的值相加,并将结果保存在AX寄存器中。

我们使用ADD指令执行加法操作。

指令为:ADD AX, BX。

这将将AX寄存器和BX寄存器中的值相加,并将结果存储在AX寄存器中。

6. 最后,我们可以将结果从AX寄存器中写回内存。

我们使用MOV指令将结果从AX寄存器写回内存。

指令为:MOV [1008], AX。

这将将AX寄存器中的值写回内存地址1008处。

7. 程序结束后,我们可以从内存地址1008处读取结果,并将其输出。

这是一个简单的汇编程序,用于将两个十进制数相加。

程序首先将两个数加载到寄存器中,然后执行加法操作,并将结果存储在寄存器中,最后将结果写回内存。

请注意,这只是一个示例程序,实际的汇编程序可能会更加复杂,并考虑到输入的错误处理和边界情况。

十进制数的加法计算的结果

十进制数的加法计算的结果

十进制数的加法计算的结果在数学中,加法是一种基本的数学运算,用于计算两个或多个数的和。

而十进制数是我们最常用的数字系统,它由0-9这10个数字组成。

因此,十进制数的加法计算的结果是指两个或多个十进制数相加后得到的结果。

下面将探讨十进制数的加法计算方法及其结果。

1. 加法计算方法十进制数的加法计算按照从右到左的顺序逐位相加。

具体步骤如下:- 步骤1:从个位开始相加,将个位上的数字相加得到个位的结果。

若结果大于等于10,则向十位进位。

- 步骤2:重复以上步骤,逐位相加,向高位进位,直到所有位数相加完毕。

2. 加法计算的示例为了更好地理解十进制数的加法计算,下面以一个示例进行说明:假设我们要计算 123 + 45 的结果。

- 个位:3 + 5 = 8,个位上的结果为 8。

- 十位:2 + 4 = 6,十位上的结果为 6。

- 百位:1 + 0 = 1,百位上的结果为 1。

因此,123 + 45 的结果为 168。

3. 加法计算的规则在进行十进制数的加法计算时,有以下一些常用规则:- 进位规则:当某一位相加的结果大于等于10时,需要向高位进位。

进位的值等于相加结果除以10的商。

- 最高位的进位规则:若最高位相加后产生进位,需要在结果的最左边增加一位,进位的值为1。

- 进位的连续规则:若连续多位产生进位,则需要连续进行进位操作,直到没有进位为止。

4. 加法计算的结果十进制数的加法计算的结果仍然是十进制数。

- 结果的位数:和的位数等于加数中位数最多的一位数的位数。

例如,两个3位数相加得到的和的位数最多为4位数。

- 结果的数值:逐位相加得到的结果是和的每一位数的数值。

例如,个位相加得到的数值是和的个位数。

通过以上的讨论,我们了解了十进制数的加法计算方法及其结果。

无论是计算简单的加法还是复杂的算式,按照规定的步骤和规则进行计算,可以确保得到准确的结果。

加法作为数学中基础且常用的运算方法之一,广泛应用于各个领域的实际问题中。

十进制数的加法

十进制数的加法

十进制数的加法在数学中,十进制数是我们日常生活中最常用的数系统。

十进制数使用了十个基本数字(0-9),并以位置表示数字的大小。

为了计算十进制数的加法,我们需要掌握一些基本的规则和方法。

一、位值对齐法首先,我们可以使用位值对齐法来进行十进制数的加法运算。

这种方法要求将两个数的各位数对齐,然后从右往左逐位相加。

如果相加的结果大于9,则需要进行进位。

例如,我们要计算1234 + 6789:```1234+ 6789-------```从个位数开始相加:4 + 9 = 13,所以我们将3写在个位上,并将1进位。

接着是十位数相加:3 + 8 + 1(进位)= 12,我们将2写在十位上,并将1进位。

然后是百位数相加:2 + 7 + 1(进位)= 10,我们将0写在百位上,并将1进位。

最后是千位数相加:1 + 6 + 1(进位)= 8,我们将8写在千位上。

所以,1234 + 6789 = 8023。

二、进位法另一种计算十进制数相加的方法是进位法。

这种方法从右往左逐位相加,将进位作为新的数进行计算。

例如,我们要计算456 + 789:```456+ 789-----```从个位数开始相加:6 + 9 = 15,我们将5写在个位上,并将1作为进位。

然后是十位数相加:5 + 8 + 1(进位)= 14,我们将4写在十位上,并将1作为进位。

最后是百位数相加:4 + 7 + 1(进位)= 12,我们将2写在百位上,并将1作为进位。

所以,456 + 789 = 1245。

三、例题演练让我们通过一些例题来练习十进制数的加法:例题一:234 + 456 = ?```234+ 456-----```从个位数开始相加:4 + 6 = 10,我们将0写在个位上,并将1进位。

然后是十位数相加:3 + 5 + 1(进位)= 9,我们将9写在十位上。

最后是百位数相加:2 + 4 = 6,我们将6写在百位上。

所以,234 + 456 = 690。

十进制数的四则运算

十进制数的四则运算

十进制数的四则运算在数学中,十进制数是我们最常用的数制。

而四则运算是我们学习数学的基础,其中包括加法、减法、乘法和除法。

本文将介绍十进制数的四则运算,并提供一些例子来帮助读者更好地理解和运用这些运算法则。

一、十进制数的加法十进制数的加法是指将两个或多个十进制数相加的运算。

在进行十进制数的加法时,我们需要将相同位置上的数字相加,并且将其进位处理。

例如,对于两个十进制数的相加,我们可以按照以下步骤进行:1. 将两个数的个位数相加,并将结果写在个位上。

2. 如果相加的结果大于等于10,则将进位的数字加到下一位的计算结果中。

3. 重复以上步骤,直到将所有位上的数字相加完毕。

例如,我们将计算1001和203的和:1001+ 203--------1204上述例子中,我们从个位数开始相加,1+3=4,因此写在个位上。

然后,我们相加十位数,0+0=0。

最后,我们相加百位数,1+2=3。

因此,最终结果为1204。

二、十进制数的减法十进制数的减法是指将一个十进制数减去另一个十进制数的运算。

在进行十进制数的减法时,我们需要学会借位和退位的操作。

下面是进行十进制数减法的一般步骤:1. 从个位数开始相减。

如果被减数小于减数,则需要向高位借位。

2. 减去对应位上的数字,并将结果写在该位上。

3. 如果需要借位,则从高位借位,并将需要借位的数字减1。

4. 重复以上步骤,直到将所有位上的数字相减完毕。

举个例子,我们将计算328减去127:328- 127--------201上述例子中,我们首先从个位数开始相减,8-7=1,因此写在个位上。

然后,我们相减十位数,2-2=0。

最后,我们相减百位数,3-1=2。

因此,最终结果为201。

三、十进制数的乘法十进制数的乘法是指将两个十进制数相乘的运算。

在进行十进制数的乘法时,我们需要将一个数的每一位与另一个数的每一位相乘,并根据乘法法则进行相加。

下面是进行十进制数乘法的一般步骤:1. 将一个数的个位数与另一个数的每一位相乘,并将结果写在个位上。

十进制的加法

十进制的加法

十进制的加法在数学运算中,加法是我们最常见的一种算术运算。

而在我们日常生活中所使用的数字系统,多数都是采用了十进制(即基数为10)的数字系统。

因此,对于十进制的加法来说,我们需要掌握相应的规则和方法。

1. 加法的基本原理十进制的加法是指将两个或多个十进制数相加得到一个结果的过程。

我们将加法分为两个步骤:竖式加法和进位处理。

2. 竖式加法竖式加法是我们最常见的计算方式,它以十进制的方式对齐数字,并逐位相加。

下面是一个例子:45+ 28------73在这个例子中,我们先从个位开始,4加8得到12。

由于12大于10,我们需要进行进位操作,将2留在个位上,将1进到十位上。

然后我们继续将十位上的数相加,得到5加2再加1等于8。

最后,我们得到的结果是73。

3. 进位处理在十进制加法中,当两个数的对应位上的和大于等于10时,我们需要进行进位处理。

进位处理是指将进位的数加到更高一位上的操作。

例如,在前面的例子中,我们在个位上的加法中得到的结果是12,超过了10。

因此,我们需要将十位上的1进位到百位上。

4. 零的运用在进行竖式加法运算时,我们经常会遇到一位数加上零的情况。

这种情况下,结果就等于该位上的数本身。

例如,在下面的例子中: 43+ 60------103我们可以看到,个位上的3加上零等于3,十位和百位上的数字保持不变。

这种情况下,我们可以直接将零省略,不需要写出来。

5. 进位的扩展在较长的十进制加法中,进位的扩展是必不可少的。

当我们计算一个多位数的加法时,需要把位数对齐,并且将进位一直传递到最高位。

下面是一个例子:789+ 516------1305在这个例子中,我们从个位开始相加,得到5加9等于14。

我们将4留在个位上,1进位到十位上。

然后,我们将十位上的数相加,得到1加8再加1等于10。

同样地,我们将零留在十位上,将1进位到百位上。

最后,我们得到的结果是1305。

6. 超过十进制的进位当我们进行十进制加法时,也会遇到超过十进制的进位情况。

十进制数的加法运算

十进制数的加法运算

十进制数的加法运算在数学中,加法是最基本的运算之一。

而十进制数的加法运算,是我们日常生活中经常会遇到的计算方法之一。

在本文中,我们将探讨十进制数的加法运算规则,以及一些实际例子来帮助我们更好地理解和应用这个概念。

一、十进制数的表示方法首先,我们需要了解十进制数的表示方法。

十进制数是由0-9这10个数字组成的,每个数字的位置决定了它的权重。

例如,1234这个数可以表示为:1×1000 + 2×100 + 3×10 + 4×1。

通过对每个数字与其对应位置的权重进行乘法运算,最后再将结果相加,我们就可以得到这个十进制数的值。

在十进制数的加法运算中,我们需要将两个或多个十进制数按照对应的位置进行竖式对齐,然后从右到左逐位相加。

当相加的结果超过9时,需要进位到高一位。

二、十进制数的加法规则十进制数的加法规则非常简单明了:1. 从右到左逐位相加:从个位开始逐位相加,然后依次进行进位计算,直到最高位。

2. 进位计算:如果相加的结果超过9,则需要向高一位进位,进位的值为1。

3. 按位相加:每位相加的结果,即为该位的最终结果。

4. 若两个数的位数不一样,可以用0填充不足的位数,以便对齐计算。

例如,将123与5相加时,可以写成123 + 005。

让我们通过几个具体的例子来演示十进制数的加法运算。

例子1:计算123 + 321解析:根据十进制数的加法规则,我们可以将这两个数按照对应的位置进行对齐相加。

```123+ 321------444```根据计算可知,123 + 321 = 444。

例子2:计算728 + 491解析:同样地,我们按照对应的位置进行对齐相加。

```728+ 491------1219```根据计算可知,728 + 491 = 1219。

例子3:计算9999 + 1解析:当最高位的进位超出计算范围时,我们需要在最高位前增加一位。

```9999+ 1------10000```根据计算可知,9999 + 1 = 10000。

微机实验:两个多位十进制数相加的实验

微机实验:两个多位十进制数相加的实验

实验一、两个多位十进制数相加的实验1、实验目的(1).学习数据传送和算术运算指令的用法。

(2).熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。

2、实验内容将两个多位十进制数相加。

要求被加数均以ASCII码形式各自顺序存放在以DATAl和DATA2为首的5个内存单元中(低位在前),结果送回DATAl处。

3、程序框图4、参考程序:DATAS SEGMENTDAT1 DB 5 DUP (0)DAT2 DB 5 DUP (0)DAT3 DB 6 DUP(0)JH DB'+','$'HX DB'_______','$';此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AXMOV DL,20H; 输入空格用以竖式对齐MOV AH,02HINT 21HLEA BX,DAT1MOV CX,5INADD1: MOV AH,01HINT 21HMOV [BX],ALINC BXLOOP INADD1MOV DL,0AH; 换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,JH; 输出加号MOV AH,09HINT 21HLEA SI,DAT2MOV CX,5INADD2: MOV AH,01HINT 21HMOV [SI],ALINC SILOOP INADD2MOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21HLEA DX,HX; 输出横线MOV AH,09HINT 21HMOV DL,0AH;换行MOV AH,02HINT 21HMOV DL,0DHMOV AH,02HINT 21H;以下计算结果LEA BX,DAT1+4LEA SI,DAT2+4LEA DI,DAT3+5MOV CX,5CLC ;清除CF标志位L1: MOV AL,[BX]ADC AL,[SI]AAAPUSHFOR AL,30H; 将AL转换为ASCII码POPFMOV [DI],ALDEC DIDEC BXDEC SILOOP L1MOV CL,6;6位循环6次JNC OUT1;没有进位直接输出MOV byte ptr [DI],31H;有进位给最高位赋1 ;以下输出显示OUT1:MOV DL,[DI]INC DIMOV AH,02HINT 21HLOOP OUT1MOV AH,4CHINT 21HCODES ENDSEND START。

两个多位十进制数相加实验

两个多位十进制数相加实验

实验一两个多位十进制数相加实验一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程二、实验要求1 独立完成每个实验项目2 按照程序流程图编好实验程序三程序框图Array加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验二将键盘输入的小写字母转换成大写字母一实验目的了解小写字母和大写字母在计算机内的表示方法,学习如何转换二、实验要求1 独立完成每个实验项目2三程序框架加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验三输入字符一实验目的1学习数据传送及算术运算指令的用法2 进一步熟悉汇编语言上机过程加程序四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在软件上调试实验程序3 写出实验结果实验四8255A并行口实验一、实验目的加深理解逐次逼近法模数转换器的特征和工作原理,掌握ADC0809的接口方法以及A/D输入程序的设计和调试方法。

二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。

三、实验原理PC口8位接8个开关K1~ K8,PB口8位接8个发光二极管,从PC口读入8位开关量送PB口显示。

拨动K1~ K8,PB口上接的8个发光二极管L1~ L8对应显示K1~ K8的状态。

程序:CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0073HIOAPT EQU 0070HIOBPT EQU 0071HIOCPT EQU 0072HIOBDATA EQU 0500HCONTPORT EQU 00DFHDATAPORT EQU 00DEHDATA1 EQU 0640HSTART: J MP IOLEDIOLED: CALL FORMATCALL LEDDISPMOV DS,AXMOV AL,82HMOV DX,IOCONPTOUT DX,ALMOV DX,IOBPTIN AL,DXMOV BYTE PTR DS:[0501H],ALMOV DX,IOCONPTMOV AL,80HOUT DX,ALMOV DX,IOBPTMOV AL,DS:[0501H]OR AL,0F0HOUT DX,ALMOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY1IOLED0: MOV AL,10100101BMOV DX,IOCPTOUT DX,ALCALL DELAY1CALL DELAY1OR AL,0F0HOUT DX,ALMOV CX,8HIOLED1: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,10101111BOUT DX,ALCALL DELAY2OR AL,01010000BOUT DX,ALCALL DELAY2LOOP IOLED1MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2MOV AL,01011010BOUT DX,ALCALL DELAY1CALL DELAY1OUT DX,ALMOV CX,8HIOLED2: MOV DX,IOBPTMOV AL,DS:[0501H]AND AL,01011111BOUT DX,ALCALL DELAY2OR AL,10100000BOUT DX,ALCALL DELAY2LOOP IOLED2MOV DX,IOCPTMOV AL,0F0HOUT DX,ALCALL DELAY2JMP IOLED0DELAY1: PUSH AXPUSH CXMOV CX,0030HDELY2: CALL DELAY2LOOP DELY2POP CXPOP AXRETDELAY2: PUSH CXMOV CX,8000HDELA1: LOOP DELA1POP CXRETLEDDISP:MOV AL,90HMOV DX,CONTPORTOUT DX,ALMOV BYTE PTR DS:[0600H],00 LED1: CMP BYTE PTR DS:[0600H],07H JA LED2MOV BL,DS:[0600H]MOV BH,0HMOV AL,CS:[BX+DATA1]MOV DX,DATAPORTOUT DX,ALADD BYTE PTR DS:[0600H],01HJNZ LED1LED2: RETFORMAT: MOV BX,0MOV WORD PTR DS:[BX+0640H],405BHADD BX,2MOV WORD PTR DS:[BX+0640H],4040HADD BX,2MOV WORD PTR DS:[BX+0640H],6D6DHADD BX,2MOV WORD PTR DS:[BX+0640H],7F5BHRETCODE ENDSEND START四、实验所用仪器计算机电源DVCC——8086 实验箱一台五、实验步骤和方法1 独立编好程序2 在实验机箱上连好实验线路3 观察实验现象4 分析实验结果实验五8259中断控制器实验一、实验目的1.掌握8259中断控制器的接口方法.2.掌握8259中断控制器的应用编程.二、实验要求1 理解实验程序2 掌握各个芯片的原理和使用方法。

微机实验作业两个多位十进制数相加

微机实验作业两个多位十进制数相加

微机实验作业两个多位十进制数相加实验二两个多位十进制数相加一、要求:将两个多位十进制数(如四位)相加,要求被加数、加数以ASCII 码形式按顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前)。

结果显示在屏幕上。

二、目的:1、学习数据传送和算术运算指令的用法。

2、熟悉在PC机上建立、汇编、连接、调试和运行汇编语言程序过程。

程序如下:STACK SEGMENT STACK 'STACK'DW 100H DUP(?)STACK ENDSDA TA SEGMENTADD1 DD H ;加数以组合十进制形式存放在双字单元ADD2 DD HSUM DD ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DATA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SI,ADD1 ;将16位偏移地址传送到通用寄存器中LEA DI,ADD2LEA BX,SUMMOV AL,[SI]ADD AL,[DI] ;最低位的一个字节相加DAA ;加法组合BCD码调整MOV [BX],AL ;结果存放在SUM第一个字节MOV AL,[SI+1] ;第二个字节相加ADC AL,[DI+1]DAAMOV [BX+1],ALMOV AL,[SI+2]ADC AL,[DI+2]DAAMOV [BX+2],ALMOV AL,[SI+3]ADC AL,[DI+3]DAAMOV [BX+3],ALMOV DL,00 ;最高位字节有进位则显示"01" ADC DL,00 CALL DISPSUMMOV AH,4CH ;返回DOSINT 21HDISPSUM PROC NEAR ;结果显示子程序PUSH AXPUSH BXPUSH CXPUSH SIMOV SI ,4PUSH DXMOV CX,5LAB:PUSH CXPUSH BXMOV AL,DLMOV BL,DLMOV CL,4 ;显示高位字节SHR AL,CLADD AL,30HMOV AH,02MOV DL,ALINT 21H ;显示一位字符AND BL,0FH ;显示低位字节ADD BL,30HMOV AH,02MOV DL,BLINT 21HPOP BXPOP CXDEC SIMOV DL,[BX][SI] ;结果显示LOOP LAB POP DXPOP SIPOP CXPOP BXPOP AXRETDISPSUM ENDPCODE ENDSEND START。

十进制数的加法十进制数的简单加法运算

十进制数的加法十进制数的简单加法运算

十进制数的加法十进制数的简单加法运算十进制数的简单加法运算十进制数的加法运算是我们日常生活中经常遇到的计算方式。

在这篇文章中,我们将探讨十进制数的简单加法运算,并通过实例来说明如何进行计算。

一、加法的基本原理加法是一种基本的数学运算,它的基本原理是将两个或多个数值相加得到一个新的数值。

在十进制数中,我们从右到左逐位相加,并考虑进位的情况。

二、十进制数的简单加法运算实例现在,我们来看几个十进制数的简单加法运算实例,以便更好地理解加法运算的过程。

1. 例子一:计算:235 + 124解答:235+ 124______359答案为359。

我们先从个位开始相加,得到9,然后考虑进位的情况,因为2加4等于6,大于等于10,所以我们需要将1进位到十位,再将3加上进位后的值,得到5。

2. 例子二:计算:987 + 129解答:987+ 129______1116答案为1116。

同样地,我们从个位开始相加,得到6,然后考虑进位的情况,因为8加9等于17,大于等于10,所以我们需要将1进位到十位,再将7加上进位后的值,得到11。

我们将1写在十位上,然后将1和1相加,得到2。

通过以上实例,我们可以看出,十进制数的简单加法运算并不复杂,只需要从右到左逐位相加,并考虑进位的情况即可。

三、加法的性质加法具有一些基本的性质,这些性质可以帮助我们更好地理解和应用加法运算。

1. 交换律:a + b = b + a加法的交换律表明,两个数相加,不管顺序如何,得到的结果是相同的。

2. 结合律:(a + b) + c = a + (b + c)加法的结合律表明,无论怎样分组,相同的数相加得到的结果是相同的。

3. 加零律:a + 0 = a加法的加零律表明,任何数与零相加,结果等于本身。

4. 加法逆元:a + (-a) = 0加法逆元是指一个数和它的相反数相加,结果等于零。

通过运用这些加法的性质,我们可以简化计算过程,更快地得出结果。

十进制数的加法学会用十进制数的加法口诀计算十进制数的和

十进制数的加法学会用十进制数的加法口诀计算十进制数的和

十进制数的加法学会用十进制数的加法口诀计算十进制数的和在日常生活和学习中,我们经常需要进行十进制数的加法运算。

十进制数的加法是一种基础算术运算,掌握了相应的口诀和技巧,可以更加轻松地进行计算。

本文将介绍如何使用十进制数的加法口诀来计算十进制数的和,并提供一些实例进行演示。

1. 十进制数的加法口诀十进制数的加法口诀即为我们常说的数字相加口诀,使用该口诀可以快速准确地计算两个及以上的十进制数相加的结果。

下面是十进制数的加法口诀:0 + 0 = 01 + 0 = 12 + 0 = 2...8 + 0 = 89 + 0 = 99 + 1 = 109 + 2 = 11...9 + 8 = 179 + 9 = 18...口诀中的规律是,两个数字相加,若个位数小于10,那么结果为个位数;若个位数大于等于10,那么结果的个位数为原个位数减去10,十位数为1。

当然,如果存在更多位数的数字相加,也是依照这个规律进行计算。

2. 实例演示现在我们通过几个实例来演示如何使用十进制数的加法口诀进行计算。

实例一:计算12 + 23根据十进制数的加法口诀,个位上的2和3相加得到5,十位上的1和2相加得到3,所以12 + 23 = 35。

实例二:计算89 + 67个位上的9和7相加得到16,十位上的8和6相加得到14,所以89 + 67 = 146。

实例三:计算123 + 456个位上的3和6相加得到9,十位上的2和5相加得到7,百位上的1和4相加得到5,所以123 + 456 = 579。

通过这几个实例,我们可以看出,使用十进制数的加法口诀进行计算非常简便,只需要将对应位上的数字相加,不断向前进位即可。

3. 注意事项在进行十进制数的加法运算时,需要注意以下几个要点:(1)位数对齐:在进行数字相加运算之前,需要将位数对齐,即将每个数的个位、十位、百位等对齐。

这样可以避免计算错误。

(2)进位处理:当某位的数字相加后大于等于10时,需要向前进位。

实验一两个多位十进制数相加的实验

实验一两个多位十进制数相加的实验

实验一两个多位十进制数相加的实验一、实验目的1、学习数据传送和算术运算指令的用法。

2、熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。

三、程序框图四、程序清单DATA SEGMENT ;定义数据段DATA1 DB 33H,39H,31H,37H,34H ;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H ;加数DATA2END EQU $-1SUM DB 5 DUP() ;定义5个空字节DATA ENDSSTACK SEGMENT ;定义堆栈段STA DB 20 DUP() ;取从STA开始的20个字节为堆栈段TOP EQU LENGTH STA ;将堆栈段长度存放在TOP中STACK ENDS ;堆栈段定义结束CODE SEGMENT ;定义程序代码段ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA ;表明程序代码段与段地址之间的关系START: MOV AX,DATAMOV DS,AX ;将段地址送入段地址寄存器MOV AX,STACKMOV SS,AX ;将当前堆栈段首地址送入SSMOV SP,AX ;将堆栈段首地址送入堆栈指针寄存器MOV SI,OFFSET DATA1END ;将DATA1的偏移地址送入SIMOV DI,OFFSET DATA2END ;将DATA2的偏移地址送入DICALL ADDA ;调用子程序ADDAMOV AX,4C00HINT 21H ;中断调用ADDA PROC NEAR ;子程序段MOV DX,SI ;DX=0004HMOV BP,DI ;BP=0009HMOV BX,05H ;程序调用次数AD1: SUB BYTE PTR[SI],30H ;将被加数的ASCII码转换成十六进制数SUB BYTE PTR[DI],30H ;将加数的ASCII码转换成十六进制数DEC SI ;SI中的内容自减1DEC DI ;DI中的内容自减1DEC BX ;程序调用次数自减1JNZ AD1 ;条件转移MOV SI,DX ;回到初始位置MOV DI,BPMOV CX,05H ;循环次数控制CLC ;清除CF位AD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BL ;从低位开始进行带进/借位的加法运算AAA ;转换成非压缩BCD码,低位存于AL,高位存于AH MOV [SI],AL ;将AL中的内容存入SI所在地址DEC SI ;偏移地址自减DEC DI ;偏移地址自减LOOP AD2 ;循环控制指令MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR[SI],30H ;将16进制数转换为ASCII码表示 ADD BYTE PTR[DI],30HDEC SI ;偏移地址自减DEC DIDEC BXJNZ AD3RET ;返回指令ADDA ENDP ;结束子程序CODE ENDS ;结束程序代码段END START五、实验结果(截屏--软件实验或者拍照---硬件实验)六、实验结果分析(预期结果与实际结果的对照)1、数据段分析用ASCII码值的形式表示被加数和加数被加数=39174;加数=450822、堆栈段分析用于存放计算过程中的过程量。

十进制数的加法轻松计算十进制数的加法

十进制数的加法轻松计算十进制数的加法

十进制数的加法轻松计算十进制数的加法十进制数的加法是我们在学习数学时经常会遇到的一个基本运算。

在进行十进制数的加法运算时,我们需要掌握一些基本规则和方法。

本文将介绍如何轻松计算十进制数的加法,并给出一些实例来帮助读者更好地理解和应用这些方法。

一、十进制数的加法基本原理我们知道,十进制数是使用0到9这10个数字来表示的。

在十进制数的加法运算中,我们需要将两个或多个十进制数进行相加,得到一个和。

这个和具体是如何计算的呢?1. 个位数相加:将要相加的各个个位数分别相加,如果和小于10,则直接写下来;如果和大于等于10,则将个位数写下,同时将进位作为下一位的数字。

2. 十位数相加:将要相加的各个十位数分别相加,同样需要考虑进位的情况。

3. 百位数、千位数等相加:同样的方法,将要相加的各个数位分别相加,注意进位的情况。

通过以上的步骤,我们就可以完成十进制数的加法运算。

二、十进制数的加法实例下面,我们将通过几个实例来演示十进制数的加法运算步骤。

1. 实例一:计算:123 + 456首先,我们将个位数相加:3 + 6 = 9,写下个位数9;然后,我们将十位数相加:2 + 5 = 7,再加上进位1(来自个位数的进位),得到8,写下十位数8;最后,百位数相加:1 + 4 = 5,没有进位,写下百位数5。

因此,123 + 456 = 579。

2. 实例二:计算:987 + 654首先,个位数相加:7 + 4 = 11,写下个位数1,并将进位1(来自十位数的进位)保存;然后,十位数相加:8 + 5 + 进位1 = 14,写下十位数4,并将进位1(来自百位数的进位)保存;最后,百位数相加:9 + 6 + 进位1 = 16,写下百位数6。

因此,987 + 654 = 1641。

通过这些实例,我们可以看到,只需要熟练掌握个位数相加、进位的规则,就能够轻松地进行十进制数的加法计算。

三、十进制数的加法技巧除了掌握基本的加法原理和步骤外,我们还可以通过一些技巧来简化计算过程。

十进制数的加减混合运算

十进制数的加减混合运算

十进制数的加减混合运算在数学中,我们经常会遇到需要进行十进制数的加减混合运算的情况。

在本文中,我们将探讨这种运算的规则和方法。

一、十进制数的加法运算十进制数的加法是最基本的运算之一。

我们将两个十进制数相加时,需要按照从右至左的顺序进行计算。

如果两个数对应位置上的数字相加的结果大于等于10,则需要进位。

例如,计算789 + 352:789+ 352------1141从右至左逐位相加:9 + 2 = 11(进位1),8 + 5 + 进位1 = 14(进位1),7 + 3 + 进位1 = 11。

最后,我们得到1141作为结果。

二、十进制数的减法运算和加法一样,十进制数的减法也是按照从右至左的顺序进行计算的。

如果被减数小于减数,我们则需要向高位借位。

例如,计算789 - 352:789- 352------437从右至左逐位相减:9 - 2 = 7,8 - 5 = 3,7 - 3 = 4。

最后,我们得到437作为结果。

三、十进制数的混合运算在实际应用中,我们经常会遇到需要进行加减混合运算的情况。

在处理这种情况时,我们需要注意运算的优先级,即先进行加法还是减法。

与一般的数学运算规则一样,我们首先进行括号内的运算,然后按照从左至右的顺序进行计算。

例如,计算789 + 352 - 246:789+ 352- 246------895首先进行加法运算:789 + 352 = 1141,然后再减去246,我们得到最终结果895。

四、应用与拓展了解了十进制数的加减混合运算规则后,我们可以应用这些知识解决更复杂的问题。

例如,计算(123 + 456) - (789 - 321):123+ 456- 789+ 321-------111首先进行括号内的加减混合运算:123 + 456 = 579,789 - 321 = 468。

然后再将两个结果进行加法运算:579 - 468 = 111。

掌握了十进制数的加减混合运算方法后,我们可以更加灵活地解决实际问题。

微机原理 两个多位十进制数相加

微机原理 两个多位十进制数相加

实验三两个多位数十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法。

熟悉在PC机上建立、汇编、链接、调试和运行8086汇编语言程序的过程。

二、实验内容及程序将两个多位数十进制数相加,要求被加数和加数均以ASCⅡ码形式各自顺序存放在以DATA1和DA TA2为首的5个内存单元中,且低位在前,结果送回DA TA1处。

编程要求与提示:[1] 两个加数均以压缩(组合)十进制数形式存放在ADD1和ADD2为首址的存贮器单元。

[2] 和以压缩十进制数的形式存入SUM以下单元。

[3] 将和送到屏幕显示部分功能的实现采用子程序的形式。

[4] 实验步骤如下:a. 用全屏幕编辑软件建立源程序。

b.用masm.exe汇编程序对源程序进行汇编,形成目标程序。

c. 用link.exe连接程序对目标程序进行连接形成可执行文件。

d. 用DEBUG对连接通过的可执行程序进行调试。

三、参考流程STACK SEGMENT STACK 'STACK'DW 100H DUP(?)STACK ENDSDA TA SEGMENTADD1 DD 12678532H ;加数以组合十进制形式存放在双字单元ADD2 DD 21736543HSUM DD ?DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TA,ES:DATA,SS:STACKSTART: MOV AX,DA TAMOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SI,ADD1LEA DI,ADD2LEA BX,SUMMOV AL,[SI]ADD AL,[DI] ;最低位的一个字节相加DAA ;加法组合BCD码调整MOV [BX],AL ;结果存放在SUM第一个字节MOV AL,[SI+1] ;第二个字节相加ADC AL,[DI+1]DAAMOV [BX+1],ALMOV AL,[SI+2]ADC AL,[DI+2]DAAMOV [BX+2],ALMOV AL,[SI+3]ADC AL,[DI+3]DAAMOV [BX+3],ALMOV DL,00 ;最高位字节有进位则显示"01"ADC DL,00CALL DISPSUMMOV AH,4CH ;返回DOSINT 21HDISPSUM PROC NEAR ;结果显示子程序PUSH AXPUSH BXPUSH CXPUSH SIMOV SI ,4PUSH DXMOV CX,5LAB:PUSH CXPUSH BXMOV AL,DLMOV BL,DLMOV CL,4 ;显示高位字节SHR AL,CLADD AL,30HMOV AH,02MOV DL,ALINT 21H ;显示一位字符AND BL,0FH ;显示低位字节ADD BL,30HMOV AH,02MOV DL,BLINT 21HPOP BXPOP CXDEC SIMOV DL,[BX][SI] ;结果显示LOOP LABPOP DXPOP SIPOP CXPOP BXPOP AXRETDISPSUM ENDPCODE ENDSEND START。

实验5(两个任意位十进制数相加)

实验5(两个任意位十进制数相加)
实验五 一、实验目的
两个任意位十进制数相加
1、掌握使用运算类指令编程及调试方法; 、掌握使用运算类指令编程及调试方法; 2、了解INT 21H部分功能号的功能和使用方法 、了解 部分功能号的功能和使用方法 3、掌握循环结构程序的设计和调试方法。 、掌握循环结构程序的设计和调试方法。 二、实验内容 从键盘输入两个任意位十进制数,求出它们的和( 从键盘输入两个任意位十进制数,求出它们的和(只 考虑最高位无进位的情况) 并显示结果。 考虑最高位无进位的情况) ,并显示结果。 三、程序流程图
四、源程序(加注释) 源程序(加注释) 五、实验步骤 写出上机操作的具体步骤, 写出上机操作的具体步骤,每一步要求仅写出具体命 令。 提示:生成EXE文件后,在DOS方式下(不用进入 文件后, 方式下( 提示:生成 文件后 方式下 DEBUG环境)运行该 环境) 文件, 环境 运行该EXE文件,键盘输入两个任意位 文件 键盘输入两个任意位 十进制数,检查屏幕上显示的结果是否正确。 十进制数,检

微机原理实验一两个多位十进制数相加实验试做报告

微机原理实验一两个多位十进制数相加实验试做报告
INT21H
CODE ENDS
END START
运行结果:
75249
上述程序有很多不方便的地方,比如①加数和被加数以低字节在前高字节 在后顺序存放在内存单元中,不符合我们日常的习惯,如果改为高字节在前低 字节在后的形式存放数据,程序如何改变?②程序只显示了相加结果,没有显 示加数和被加数,如果要求显示加数和被加数,程序如何修改?③如果按47193+28056=75249格式显示,程序如何修改?
【实验说明】
汇编语言没有十进制加法指令,ADD/ADC加法指令的运算对象是二进制 数,如果要进行BCD码数的加法,需要对结果进行修正。组合BCD码的加法调 整指令为DAA,它针对AL寄存器中的组合BCD码数之和进行修正。对于未组合BCD码的加法调整指令为AAA(加法的ASCII码调整指令),它将存于AL寄存 器中的一位ASCII码数加法运算的结果调整为一位拆开型十进制数,仍保留在AL中,如果向高位有进位(AF=1),则进到AH中。
CODE,DS:
DATA
START:
MOV AX,DATA
MOV DS,AX
MOV CX,5;计数
MOV SI,0;做指针用,因从DATA1的第一个数取数,故SI=OCLC
NEXT:
MOVAL,DATA1[SI];取被加数给AL
ADCAL,DATA2[SI];取加数和AL相加
AAA:未组合十进制数加法调整指令
运行结果:
47193
28056
75249
3程序清单(wjsy3a.asm)
DISP MACRO M
MOV AH,2
MOV DL,M
INT21H
ENDM
DATA SEGMENT
DATA1DB 34H,37H,31H,39H,33H

十进制数的加减法运算

十进制数的加减法运算

十进制数的加减法运算在数学中,十进制数是我们常用的一种计数系统。

它由10个数字(0、1、2、3、4、5、6、7、8、9)组成,并按照权重的规则进行运算。

本文将详细介绍十进制数的加减法运算方法。

一、十进制数的加法运算十进制数的加法运算是指将两个或多个十进制数相加的过程。

对于十进制数的加法运算,我们遵循以下规则:1. 从右往左逐位相加,先将个位进行相加,然后十位、百位,依次类推。

2. 如果相加的两个数在某一位上的和超过9,则结果的该位值为和值减去10,并将进位1加到下一位的运算中。

3. 如果两数位数不同,可以在较短的数前补0,使其位数相同。

举例如下:例1:计算49 + 2749+27------76按照上述规则,先将个位上的数4和7相加,得到11,结果中个位上的数为1,十位上的数为进位,然后将十位上的数9和2相加,得到11,结果中十位上的数为1,百位上的数为进位。

因此,49 + 27 = 76。

例2:计算1234 + 56781234+5678-------6912按照上述规则,分别将个位、十位、百位和千位的数字相加,得到最终结果。

二、十进制数的减法运算十进制数的减法运算是指将一个十进制数减去另一个十进制数的过程。

对于十进制数的减法运算,我们遵循以下规则:1. 从右往左逐位相减,先减去个位,然后十位、百位,依次类推。

2. 如果被减数小于减数,则需要借位。

借位的原则是从高位向低位借,借位后需要在被减数中加上10。

3. 如果两数位数不同,可以在较短的数前补0,使其位数相同。

举例如下:例1:计算87 - 2987- 29------58按照上述规则,先减去个位上的数9和7,得到差值2,然后减去十位上的数2和8,由于被减数小于减数,需要借位。

在被减数87中的十位上加上10,结果为17。

然后再减去个位上的数,得到差值8。

因此,87 - 29 = 58。

例2:计算5432 - 12875432- 1287-------4145按照上述规则,分别将个位、十位、百位和千位的数字相减,得到最终结果。

微机原理上机--汇编语言程序--编写程序求两个十进制数之和-并将和以十进制数的形式送屏幕显示

微机原理上机--汇编语言程序--编写程序求两个十进制数之和-并将和以十进制数的形式送屏幕显示

}上机作业二一.实验目的1.熟练掌握汇编语言程序设计的方法及上机步骤。

2.掌握算术运算指令的应用。

3.掌握子程序的设计方法。

4.掌握DOS功能的调用方法。

二.\三.试验仪器586微机一台四.实验内容编写程序求两个十进制数之和,并将和以十进制数的形式送屏幕显示。

编程要求与提示:[1] 从键盘输入两个十进制数(如与),以二进制数形式存放在ADD1和ADD2为首址的存贮器单元,输入一个十进制数采用子程序形式。

[2] 和以二进制数的形式存入SUM以下单元。

&[3] 将和送到屏幕显示采用子程序形式。

[4] 实验步骤如下:a. 用全屏幕编辑软件建立源程序。

b.用汇编程序对源程序进行汇编,形成目标程序。

c. 用连接程序对目标程序进行连接形成可执行文件。

d. 用DEBUG对连接通过的可执行程序进行调试。

五.源程序;STACK SEGMENT STACK 'STACK'DW 100H DUP()TOP LABEL WORDSTACK ENDSDATA SEGMENTFAKE DW 0KEYBUFFER DB 100{DBDB 100 DUP()BUF DB 8 DUP(),'$'ADD1 DWADD2 DWA2 DWSUM DW\S1 DWSTRING1 DB 'PLEASE input decimal data: $' DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK START:MOV AX,DATA—MOV DS,AXMOV ES,AXMOV AX,STACKMOV SS,AXLEA SP,TOPCALL INPUT1CALL TRANS10TO16^MOV ADD1,AXMOV A1,DXCALL DISPCRCALL INPUT1CALL TRANS10TO16MOV ADD2,AXMOV A2,DX…CALL DISPCRMOV SUM,AXMOV S1,DXADD AX,ADD1ADC DX,A1MOV SUM,AXMOV S1,DX<CALL far ptr ADISPMOV AL,0INT 21H…INPUT1 PROC NEARLEA DX,STRING1MOV AH,09HINT 21HMOV AH,0AHLEA DX,KEYBUFFERINT 21HLEA SI,KEYBUFFER+1:retINPUT1 endpTRANS10TO16 PROC NEAR PUSH CXPUSH SI; PUSH BXXOR AX,AX~XOR DX,DXXOR CX,CXMOV CL,[SI]INC SIMOV AL,[SI]INC SISUB AL,30HDEC CX,JCXZ TRANSF2MOV BX,10TRANSF1: CALL MULAXI PUSH DXJO TRANSF_ERRMOV DL,[SI]INC SI:SUB DL,30HADD AL,DLJC TRANSF_ERRPOP DXLOOP TRANSF1MOV BX,0TRANSF2: JMP TRANSF_OK "TRANSF_ERR: MOV BX,-1 TRANSF_OK: POP SIPOP CXretTRANS10TO16 endpMULAXI PROC NEARPUSH CX,PUSH AXMOV AX,DXMUL BXMOV CX,AXPOP AX ;XOR DX,DXMUL BXPUSH AX、MOV AX,CXADD AL,DLADC AH,DHMOV DX,AXPOP AXPOP CXret.MULAXI endpDISPCR PROC NEARPUSH AXPUSH DXMOV AH,2MOV DL,0AHINT 21H【MOV AH,2INT 21HPOP DXPOP AXretDISPCR endp。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
ASSUME ES:DATA,SS:STACK
MAIN PROC FAR
START:
PUSH DS
XOR AX,AX
PUSH AX ;将程序段前缀入栈,利用RET返回时调用INT20H,返回DOS
REPZ SCASB ;跳过0值不显示
DEC DI
MOV AL," "
REPZ SCASB
MOV DX,DI ;显示缓冲区首址
DEC DX ;调整指针,指向要显示的第一个字符
MOV AH,09H
INT 21H ;利用DOS系统功能调用显示字串
DISPCHR PROC
MOV AH,02H
INT 21H ;调用DOS中断,显示DL中字符
LEA BX,STR2
CALL DISPSTR ;调用显示子程序,显示提示输入加数字符串
LEA BX,ADD2
CALL INPUT ;输入加数
LEA BX,ADD1
CALL ADDAIGN ;被加数个位对齐到高地址
LEA BX,ADD2
CALL ADDAIGN ;加数个位对齐到高地址
POP AX
POP DX
RET
DISPSTR ENDP
;**************************************************
;子程序名称:ADDALIGN
;子程序功能:将加数或被加数个位对齐(按最长20位处理)
; 入口参数:BX为处理的加数或被加数首址
STR1 DB "ADD1:","$"
STR2 DB "ADD2:","$"
DATA ENDS
;=================================================
;代码段
;-------------------------------------------------
INPUTNUM:
MOV AH,01H
INT 21H ;调用中断,输入一个字符到AL
CMP AL,0DH
JZ EXITINPUT ;遇到回车返回
CMP AL,'0'
JB INPUTNUM ;非数字重新输入
CMP AL,'9'
JA INPUTNUM ;非数字重新输入
LEA BX,ADD1
CALL DISPSTR ;显示被加数
MOV DL,' '
CALL DISPCHR ;显示空格“ ”
MOV DL,'+'
CALL DISPCHR ;显示加号“+”
MOV DL,' '
CALL DISPCHR ;显示空格“ ”
; 入口参数:BX为要转换BCD码的首址,遇“$”结束
; 出口参数:无
;程序流程图:图5-15
;**************************************************
BCD2ASC PROC
PUSH AX ;保护现场
PUSH CX
PUSH DI
LOOP ADDALL ;把20位加完
ADC BYTE PTR[BX],0 ;若最高位有进位,利用本句存到和中
RET
BCDADD ENDP
;**************************************************
;子程序名称:BCD2ASC
;子程序功能:将BCD码转换为ASCII码
;子程序名称:BCDADD
;子程序功能:多位BCD码的相加求和
; 入口参数:SI为被加数首址,DI为加数首址
; BX为和首址
; 出口参数:无
;程序流程图:图5-14
;**************************************************
;*************************************************
;例5.13
;程序名称:BCDADD.ASM
;程序功能:输入两20位以内的十进制数,相加并显示和
;调用子程序:输入子程序:INPUT
; 非压缩BCD码相加求和子程序 BCDADD
; 出口参数:无
;程序流程图:图5-12
;**************************************************
DISPSTR PROC
PUSH DX ;保护现场
PUSH AX
MOV CX,21
MOV DI,BX
MOV AL,0
CLD
LEA BX,SUM
CALL DISPSTR ;显示和
RET
MAIN ENDP ;主程序结束
;**************************************************
;子程序名称:INPUT
;子程序功能:输入数字,遇到回车返回,最多输入20位
; 入口参数:BX为要输入缓冲区首址
; 出口参数:无
;程序流程图:图5-11
;**************************************************
INPUT PROC
PUSH CX
PUSH AX
PUSHF ;保护现场
XOR CX,CX
REP MOVSB ;将加数或被加数个位与高地址对齐
POP CX
MOV AL,0
MOV DI,BX
CLD
REP STOSB ;对齐后对源串清空处理
RET
ADDAIGN ENDP
;**************************************************
; 出口参数:无
;程序流程图:图5-13
;**************************************************
ADDAIGN PROC
MOV DI,BX
MOV AL,"$"
V CX,21
CLD
REPNZ SCASB ;扫描标志符“$”的位置
LEA BX,ADD2
CALL DISPSTR ;显示加数
MOV DL,' '
CALL DISPCHR ;显示空格“ ”
MOV DL,'='
CALL DISPCHR ;显示等号 “=”
MOV DL,' '
CALL DISPCHR ;显示空格“ ”
INC CX
CMP CX,20
JA EXITINPUT ;输入到20个后退出
MOV [BX],AL ;存放输入的数字
INC BX ;调整地址指针,指向缓冲区下一个字符
JMP INPUTNUM
EXITINPUT:
MOV BYTE PTR [BX],"$" ;放一个结束标志符
POPF
POP AX
POP CX ;恢复现场
RET
INPUT ENDP
;**************************************************
;子程序名称:DISPSTR
;子程序功能:显示字符串,遇到"$"符结束
; 入口参数:BX为要显示字符串首址
; BCD码转ASCII子程序 BCD2ASC
; 字符串显示子程序 DISPLAY
;程序流程图:图5-10
;*************************************************
;回车换行宏定义
;-------------------------------------------------
LR MACRO
MOV DL,0DH
MOV AH,02H
INT 21H
MOV DL,0AH
MOV AH,02H
INT 21H
ENDM
;==================================================
OR AL,30H ;BCD→ASCII
MOV [DI],AL ;放回ASCII码
INC DI
JMP CONV ;继续转换剩余BCD码
EXITB2A:
POP DI
POP CX
POP AX ;恢复现场
RET
BCD2ASC ENDP
LEA SI,ADD1 ;被加数首址
LEA DI,ADD2 ;加数首址
LEA BX,SUM ;和首址
CALL BCDADD ;调用子程序,完成多位BCD码的加法
LEA BX,SUM
CALL BCD2ASC ;将和转为ASCII码
LR ;另起一行
MOV DI,BX
MOV AL,0
MOV CX,21
CLD
REPZ SCASB ;跳过高位的0不转换
DEC DI ;找到的非0位地址
CONV:
MOV AL,[DI]
CMP AL,"$"
JZ EXITB2A ;遇到“$”退出
相关文档
最新文档