题目说明:给出一个公式,例如 “35 + 28 = ”,输出计算结果

一、准备材料

DOS功能调用表:https://blog.csdn.net/mybelief321/article/details/13168071

emu8086软件:https://emu8086-microprocessor-emulator.en.softonic.com/

ASCII码参考表:http://ascii.911cha.com/

二、asm代码

其中的注释详细解释了每一步代码的含义

在输入公式时,数字必须为两位,例如:01 + 01 =

加号、等于号两侧都需要加空格(双元运算符书写惯例)

data segment
question db "97 + 56 = $"
result db 0,0,0,"$"
data ends code segment
start:
mov ax, data
mov ds, ax
;将data放入ax
lea dx, question
mov ah, 09h
int 21h
;调用DOS 09H功能:显示以$结尾的字符串 xor ax,ax
;ax归0 mov al, question + 1
;第一个数的个位存入al
mov bl, question
;第一个数的十位存入bl mov cl, question + 6
;第二个数的个位存入cl
mov dl, question + 5
;第二个数的十位存入dl sub al, 30H
sub cl, 30H
sub bl, 30H
sub dl, 30H
;ASCII转码 clc
;清空进位标志CF add al, cl
;两数个位相加
aaa
;使用非压缩BCD码相加指令,结果存储在AX mov byte ptr result+2,al
;将最终结果的个位存入result的个位
mov al, bl
adc al, dl
;检查CF进位标志,进行带进位加法
aaa
mov byte ptr result+1,al
;将最终结果的十位存入result的十位 lea dx, result
jc hundred
;如果CF位为1,则说明十位加法后产生了百位,则转至处理三位数的hundred流程 add byte ptr result+1,30h
add byte ptr result+2,30h
;转ASCII用于打印
inc dx
jmp display
;显示最终结果 hundred:
mov byte ptr result, 31h
;若产生百位,则必定为1
add byte ptr result+1, 30h
add byte ptr result+2, 30h
;个位和十位转为ASCII display:
mov ah, 9
int 21h mov ax, 4c00h
;结束,返回值为AL:0
int 21h
ends end start

emu8086实现两位数加法运算的更多相关文章

  1. emu8086实现两位数乘法运算

    题目说明:从键盘上输入任意两个不大于2位数的正实数,计算其乘积,结果在屏幕上显示 一.准备材料 DOS功能调用表:https://blog.csdn.net/mybelief321/article/d ...

  2. HDU 1002 (高精度加法运算)

    A + B ProblemII Time Limit: 2000/1000 MS(Java/Others)    Memory Limit: 65536/32768 K (Java/Others) T ...

  3. 数据结构:DHUOJ 单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果)

    单链表ADT模板应用算法设计:长整数加法运算(使用单链表存储计算结果) 时间限制: 1S类别: DS:线性表->线性表应用 题目描述: 输入范例: -5345646757684654765867 ...

  4. 【 c语言中无符号和有符号的加法运算】【深入理解】--【sky原创】

    原文:[ c语言中无符号和有符号的加法运算][深入理解]--[sky原创]   第一题 #include<stdio.h> int main() { unsigned int a=6; i ...

  5. RNN入门(4)利用LSTM实现整数加法运算

      本文将介绍LSTM模型在实现整数加法方面的应用.   我们以0-255之间的整数加法为例,生成的结果在0到510之间.为了能利用深度学习模型模拟整数的加法运算,我们需要将输入的两个加数和输出的结果 ...

  6. MATLAB的两种移位运算

    MATLAB的两种移位运算: 1)circshift矩阵移位 circshift:循环移位数组 语法:B = circshift(A,shiftize) 说明: B  = circshift(A,sh ...

  7. MATLAB:图形加法运算(imadd函数)

    close all; %关闭当前所有图形窗口,清空工作空间变量,清除工作空间所有变量 clear all; clc; I=imread('rice.png'); %读入图像rice,赋值给I J=im ...

  8. C语言不使用加号实现加法运算的几种方法

    今天看到<编码:隐匿在计算机软硬件背后的语言>的第十二章:二进制加法器.讲述了全加器,半加器的原理以及如何实现加法.实现加法时所使用的全加器,半加器中包含的所有逻辑门在C语言中都有相应的运 ...

  9. 线性结构2 一元多项式的乘法与加法运算 【STL】

    02-线性结构2 一元多项式的乘法与加法运算(20 分) 设计函数分别求两个一元多项式的乘积与和. 输入格式: 输入分2行,每行分别先给出多项式非零项的个数,再以指数递降方式输入一个多项式非零项系数和 ...

随机推荐

  1. iOS应用性能调优--初级---王朋

    目录 我要给出的建议将分为三个不同的等级: 入门级. 中级和进阶级: 入门级(这是些你一定会经常用在你app开发中的建议) 1. 用ARC管理内存 2. 在正确的地方使用reuseIdentifier ...

  2. TCP的报文详细解读

    这张图好像挺有名的,其实一开始我看见的时候是一脸懵逼的,但是通过翻书(大学时代最害怕的计算机网络),查阅他人博客等等办法,最后终于有了一个系统的了解,当然,这里知识点多而杂,大家可以多看几遍,结合上面 ...

  3. Linux重定向输出到以当前时间命名的文件 / date命令格式化输出

    1. 利用date命令重定向到以当前时间命名的文件 例如: ls -l > mylog_$(date +"%Y-%m-%d_%H-%M-%S").log 或: ls -l & ...

  4. NOIP2021T1报数——黄蓝紫黑的神奇梯度

    7A3T 点击查看代码 #include<iostream> #include<cstdio> #include<cmath> #include<algori ...

  5. 【论文考古】Training a 3-Node Neural Network is NP-Complete

    今天看到一篇1988年的老文章谈到了训练一个简单网络是NPC问题[1].也就是下面的网络结构,在线性激活函数下,如果要找到参数使得输入数据的标签估计准确,这个问题是一个NPC问题.这个文章的意义在于宣 ...

  6. [LeetCode]剑指 Offer 17. 打印从1到最大的n位数

    输入数字 n,按顺序打印出从 1 到最大的 n 位十进制数.比如输入 3,则打印出 1.2.3 一直到最大的 3 位数 999. 示例 1: 输入: n = 1 输出: [1,2,3,4,5,6,7, ...

  7. 📚 选择排序和插入排序区别-DS笔记

    选择排序法 A[i...n)未排序,A[0...i)已排序 A[i...n]中最小值要放到A[i]的位置 复杂度 \(O(n^2)\) 第一层循环n次 第二层循环:i=0,n次:i=1,n-1次... ...

  8. C#中default 、base 、this关键字用法简介

     C#中default关键字用法简介 default 关键字可在switch语句或泛型代码中使用.switch语句:指定默认标签.泛型代码:指定类型参数的默认值.对于引用类型为空,对于值类型为零swi ...

  9. 导出QQ聊天记录并用python处理

    今天和天天弟弟聊天,很有感慨,想把聊天记录保存下来(QQ),教程如下. STEP1  从QQ里导出聊天记录 有两个方法导出:(1)打开聊天窗口中的"聊天记录",右下角是消息管理器, ...

  10. Mysql基础学习第二天

    Mysql基础学习第二天 函数 函数:是指一段可以直接被另一段程序调用的程序或代码. 字符串函数 数值函数 日期函数 流程函数 字符串函数 MySQL内置很多字符串函数,常用的几个如下: 函数 功能 ...