题目说明:给出一个公式,例如 “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. 关于linux shell编程,alias rm='cp $@ ~/backup; rm $@'

    书上的这个例子需要在ubuntu的低版本的系统才支持,现在基本上都不支持了,想实现也很简单自己写一个脚本先备份再删除. alias也只是做了一次替换alias rm='cp $@ ~/backup; ...

  2. 使用Reachability监测网络变化-陈鹏

    在appdelegate里面添加观察者,并启动监测 // 使用通知中心监听kReachabilityChangedNotification通知 [[NSNotificationCenter defau ...

  3. mapTest

    import java.util.*;public class mapTest { public static void main(String[] args) throws Exception{ L ...

  4. IP地址与子网划分

    IP地址与子网划分 目录 IP地址与子网划分 一.IP地址(Internet Protocol Address) 1.IP地址的表示 2.IP地址的组成 3.IP地址的分类 (1)A类IP地址 (2) ...

  5. 基于3U PXIe的ZU7EV图像编解码设计方案

    1.板卡简介 基于3U PXIe的ZU7EV图像编码卡用于加固设备的图像接入,编解码采集存储.用于机载.舰载.车载等工作场景,支持工业级温度工作.(此方案是由北京太速设计的,已应用到实际领域) 2.主 ...

  6. Solution -「Code+#2」「洛谷 P4033」白金元首与独舞

    \(\mathcal{Description}\)   link.   给定一个 \(n\times m\) 的网格图,一些格子指定了走出该格的方向(上下左右),而有 \(k\) 格可以任意指定走出方 ...

  7. Solution -「ZJOI2012」「洛谷 P2597」灾难

    \(\mathcal{Description}\)   link.   给定一个捕食网络,对于每个物种,求其灭绝后有多少消费者失去所有食物来源.(一些名词与生物学的定义相同 w.)   原图结点数 \ ...

  8. Solution -「JOISC 2019」「LOJ #3036」指定城市

    \(\mathcal{Description}\)   Link.   给定一棵含 \(n\) 个结点的树,双向边权不相同.\(q\) 次询问,每次询问在树上标记 \(e\) 个点,标记的价值为所有趋 ...

  9. Solution -「NOI 2018」「洛谷 P4768」归程

    \(\mathcal{Description}\)   Link.   给定一个 \(n\) 个点 \(m\) 条边的无向连通图,边形如 \((u,v,l,a)\).每次询问给出 \(u,p\),回答 ...

  10. VMware vSphere,ESXi和vCenter的关系和区别

    VMware Inc.是一家软件公司.它开发了很多产品,尤其是各种云解决方案 .他的云解决方案包括云产品,数据中心产品和桌面产品等. vSphere是在数据中心产品下的一套软件.vSphere类似微软 ...