在汇编中显示两位数? [复制]

2024-05-01

我对汇编编程完全陌生。在课堂作业的示例中,需要将两个数字相加并显示总和,我发现神秘的是当其是两位数时显示总和。 这是我的代码。

    mov al,num1
    mov bl,num2

    add al,bl

    add ax,3030h

    mov dl,ah
    mov ah,02h
    int 21h

    mov dl,al
    mov ah,02h
    int 21h

    mov ah,4ch
    int 21h

虽然加法可能会产生压缩数字,但如何将其解压并显示为两个不同的十进制数字?


我也是装配新手。 但我认为这会对你有所帮助。

 
.model small
.stack 100h
.data 
    msg1 db "Enter number 1:$"
    msg2 db "Enter number 2:$"
    msg3 db "Sum is:$"
    no1 db 0
    no2 db 0
    mysum db 0
    rem db 0


.code 
    mov ax,@data 
    mov ds,ax

;print msg 1
    mov dx,offset msg1 
    mov ah,09h
    int 21h

;read input no1
    mov ah,01h
    int 21h
    sub al,48
    mov no1,al

;print new line
    mov dl,10
    mov ah,02h
    int 21h

;print msg2
    mov dx,offset msg2
    mov ah,09h
    int 21h

;read input 2
    mov ah,01h
    int 21h
    sub al,48
    mov no2,al

;print new line 
    mov dl,10
    mov ah,02h
    int 21h

;print msg3
    mov dx,offset msg3
    mov ah,09h
    int 21h

;add two numbers
    mov dl,no1
    add dl,no2
    ;moving the sum to mysum
    mov mysum,dl

    ;clear AH to use for reminder
    mov ah,00
    ;moving sum to al
    mov al,mysum
    ;take bl=10
    mov bl,10
    ;al/bl --> twodigit number/10 = decemel value
    div bl
    ;move reminder to rim
    mov rem,ah
    ;to print (al) we move al to dl
    mov dl,al
    add dl,48
    mov ah,02h
    int 21h

    ;to print the reminder
    mov dl,rem
    add dl,48
    mov ah,02h
    int 21h

    mov ax,4c00h
    int 21h
end

我所做的就是将总数移至可以保留的所有位置。 然后我将其除以 10 并打印商和提醒。 如果你觉得有问题。你可以问。谢谢 !

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在汇编中显示两位数? [复制] 的相关文章

  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 汇编-符号标志和奇偶校验标志

    我不明白什么时候设置标志标志 什么时候设置奇偶校验 据我所知 符号标志表示运算结果的符号 0表示正数 1表示负数 那么为什么在下一个代码中 mov al 5 sub al 124 SF为零 结果是负数 关于PF 为什么a和b中设置了PF a
  • 取消的分支与常规分支有何不同?

    特别是对于 SPARC Assembly 取消的分支与常规分支有何不同 我一直认为 当我需要填充分支指令的 nop 延迟槽时 需要取消分支指令 但是 我认为我在这一部分上是不正确的 因为您可以在不取消分支的情况下填充 nop 如果不采用分支
  • 为什么不能执行 mov [eax], [ebx] [重复]

    这个问题在这里已经有答案了 我可以做这个 mov eax ebx 和这个 mov eax ebx 甚至这个 mov eax ebx 但不是这个 错误C2415 mov eax ebx 只是wtf 为什么 它与 ptr1 ptr2 相同 为什
  • 为什么 Solaris 汇编器生成的机器代码与 GNU 汇编器在这里不同?

    我为 amd64 编写了这个小汇编文件 对于这个问题来说 代码的作用并不重要 globl fib fib mov edi ecx xor eax eax jrcxz 1f lea 1 rax ebx 0 add rbx rax xchg r
  • 近调用/跳转表并不总是在引导加载程序中工作

    一般问题 我一直在开发一个简单的引导加载程序 并在某些环境中偶然发现了一个问题 在这些环境中 此类指令不起作用 mov si call tbl SI Call table pointer call call tbl Call print c
  • 为什么 RISC-V S-B 和 U-J 指令类型以这种方式编码?

    我正在读一本书 计算机组织与设计RISC V版 我遇到了 S B 和 U J 指令类型的编码 我上面提到的那些类型有奇怪的编码立即字段 S B 类型将直接字段分为两部分 这是有道理的 因为所有指令编码都必须相似 但我无法理解为什么立即字段以
  • 在 x86 ASM 中测试零通常哪个更快:“TEST EAX, EAX”与“TEST AL, AL”?

    测试 AL 中的字节是否为零 非零通常哪个更快 TEST EAX EAX TEST AL AL 假设之前有一个 MOVZX EAX BYTE PTR ESP 4 指令加载了一个带有零扩展的字节参数到 EAX 的其余部分 防止了我已经知道的组
  • 为什么当大小大于 50 时,该程序花费的时间会呈指数级增长?

    所以我正在为类编写一个 ARM 汇编快速排序方法 我对大部分内容都有了解 除了复杂性没有意义 我们将其与我们制作的另一种冒泡排序方法进行比较 它对于具有 1 个参数和 10 个参数的示例表现更好 然而 我什至无法比较 100 个参数测试 因
  • 使用 Easy 68K (68000) 组装范围内的随机数

    我正在使用 Easy 68K 模拟器创建一个简单的黑杰克游戏 需要使用随机数来分配牌 我的牌必须在 2 到 11 的范围内 我似乎每次都得到相同的数字 但它不在我预期的范围内 我的卡值需要以 D3 结束 因此我有以下随机数代码 CLR L
  • 有没有办法使用 i387 fsqrt 指令获得正确的舍入?

    有没有办法使用 i387 fsqrt 指令获得正确的舍入 除了改变精确模式在 x87 控制字中 我知道这是可能的 但这不是一个合理的解决方案 因为它存在令人讨厌的重入型问题 如果 sqrt 操作中断 精度模式将出错 我正在处理的问题如下 x
  • 弹出 x86 堆栈以访问函数 arg 时出现分段错误

    我正在尝试链接 x86 程序集和 C 我的C程序 extern int plus 10 int include
  • ARMv8 A64 汇编中立即值的范围

    我的理解是 ARMv8 A64 汇编中的立即参数可以是 12 位长 如果是这样的话 为什么这行汇编代码是 AND X12 X10 0xFEF 产生此错误 使用 gcc 编译时 Error immediate out of range at
  • 程序集比较标志理解

    我正在努力理解汇编程序中的以下代码片段 if EAX gt 5 EBX 1 else EBX 2 在汇编程序中 可以写如下 根据我的书 模拟jge操作说明 https www felixcloutier com x86 jcc您通常会使用
  • 如何使用movntdqa避免缓存污染?

    我正在尝试编写一个 memcpy 函数 该函数不会将源内存加载到 CPU 缓存中 目的是避免缓存污染 下面的 memcpy 函数可以工作 但会像标准 memcpy 一样污染缓存 我正在使用带有 Visual C 2008 Express 的
  • 为什么 clang 使用 -O0 生成低效的 asm(对于这个简单的浮点和)?

    我正在 llvm clang Apple LLVM 版本 8 0 0 clang 800 0 42 1 上反汇编此代码 int main float a 0 151234 float b 0 2 float c a b printf f c
  • 是否可以在VM内使用VMX CPU指令?

    VM guest 内部的进程是否有可能使用 VMX AMD V VT x CPU 指令 然后由外部 VMM 处理而不是直接在 CPU 上处理 Edit 假设外部VM使用VMX本身来管理其虚拟客户机 即它在Ring 1中运行 如果可能的话 是
  • 在 x86 程序集中存储大量布尔值的最佳方法是什么?

    最近我一直在处理充满布尔值的大型数组 目前 我将它们存储在 bss部分有一个 space指令 它允许我创建字节数组 但是 由于我只需要存储布尔值 因此我希望从数组中逐位读取和写入数据 目前 我能想到的最好方法是有一个 space指令所需存储
  • LC3 LEA指令和存储的值

    我对这个问题感到困惑 指令后寄存器0中存储的值是多少 LEA R0 A 被处决了吗 为什么答案是x370C 我认为应该将A的地址加载到R0中 如果是这样我们怎么知道地址 有人可以帮忙吗 非常感谢 ORIG X3700 LEA R0 A LD
  • 汇编器8086将32位数字除以16位数字

    我尝试将 32 位数字除以 16 位数字 例如 10000000h 除以 2000h 根据我尝试做的设计除以 右 4 位数字除以除数 然后左 4 位数字除以除数 这是我的代码 DATA num dd 10000000h divisor dw

随机推荐

  • build.gradle 文件中的 abiFilters 属性是什么?

    我找到了关于什么的文档ABI https developer android com ndk guides abis html是 但我找不到任何有关 ndk abiFilters 属性的确切用途的文档 具体有几个问题 如果我设置该属性 列出
  • 在 Python 中编写 try except 的最佳方式是什么?

    假设我有一个代码片段如下 r requests post url data values files files 由于这是发出网络请求 因此该行可能会抛出一堆异常 为了论证的完整性 我还可以读取文件 发送电子邮件等 要遇到此类错误 我会这样
  • 有没有办法将aiohttp客户端与socks代理一起使用?

    好像aiohttp ProxyConnector doesn t https github com KeepSafe aiohttp blob master aiohttp connector py L639支持socks代理 有什么解决方
  • ./ansi-html 1:0 中的错误模块解析失败:意外字符“#”(1:0)

    我正在学习角度js 当我运行 ngserve open 时出现以下错误 ERROR in ansi html 1 0 Module parse failed Unexpected character 1 0 You may need an
  • 如何在vue中覆盖materializecss sass变量?

    我想改变物化中的变量 变量 scss https github com Dogfalo materialize blob master sass components variables scss e g primary color col
  • 无法启动 UI Automator 查看器

    我无法启动 UI Automator 查看器 任何人都可以帮助我吗 我怎样才能启动它 当我双击 uiautomatorviewer 一段时间时 黑色窗口打开但自动关闭 即使我在 Windows 路径变量中设置了变量 ANDROID HOME
  • 如何使用php从手机号码获取国家代码

    我正在从数据库中的数据库获取手机号码 我有超过 1000 个手机号码 我的数据库如下所示 mobilenumber 971525478965 919844005522 45712345678 我想遍历数据库中的每个数字并找到countryc
  • $lookup 多个级别而不使用 $unwind?

    我有以下收藏 场地集合 id ObjectId 5acdb8f65ea63a27c1facf86 name ASA College Manhattan Campus addedBy ObjectId 5ac8ba3582c2345af70d
  • 为什么仅当项目中使用 lambda 时,javaassist 在加载 Entitymanager 时才会抛出 invalid Constant type: 18

    在发布这个具体问题之前 我阅读了很多 QnA 大部分的javassist 无效常量 18问题已得到解答以升级javassist库 基于这些 QnA 我还将项目中的 lib 升级到了最新版本 它确实有效 但我不明白以下内容 需要有人帮助提供一
  • Robo 3T 错误:网络无法访问

    我正在尝试将 Robo 3T 连接到我的在线数据库 但它似乎不起作用 我可以用它连接到本地数据库 我尝试使用 MongoDB Compass 进行连接 详细信息和身份验证工作正常 我能够连接 但当我在 Robo 3T 中连接相同的细节时 它
  • 我想更改此代码以仅显示“确定”并删除取消按钮

    我想更改此代码以仅显示 确定 并删除取消按钮 Object contestacion5 JOptionPane showInputDialog null 5 Que describe mejor a la Norte a Examen Ti
  • .NET:对象头有什么用?

    在 NET 中 每个对象有 8 个字节的开销 4 个字节是指向对象类型的指针 另外 4 个字节 称为对象头 有何用途 注意 这个问题是在 2010 年提出的 并且是 32 位特定的 开销与位数相关 1 个指针大小用于 对象类型 方法表 1
  • 向元素添加类

    像这样 我有两个选项卡 所以当我单击其中一个选项卡时 它是活动的 逻辑的 现在我试图区分活动选项卡和非活动选项卡 但不是使用 css 属性 但我想向单击的选项卡添加特定的类 如下所示 tab1 addClass active 但是 没有什么
  • 如何避免 C 运行时 (crt*.o) 垃圾

    我有两个C源文件 foo1 c include
  • 条形图中的并排条形

    这是基于这个帖子 https stackoverflow com questions 26913954 make barplot in ggplot2 with summary statistics noredirect 1 comment
  • 如何更改matplotlib中填充线的线宽?

    有没有办法增加 matplotlib 中剖面线的宽度 例如 下面的代码通过指定linewidth仅改变边缘的宽度 我想更改用于填充的线的线宽 import matplotlib pyplot as plt import numpy as n
  • 在 WPF 中展开 TreeView 时显示“请稍候...”消息

    我的 TreeView 中有很多项目 而且项目也非常复杂 我不想使用虚拟化 展开 TreeView 有时需要花费大量时间 因此 是否有任何事件 例如 IsTreeViewExpanding 或类似的事件 我可以在其中显示 正在生成 Tree
  • 替换 lambda 表达式中的参数类型

    我正在尝试将 lambda 表达式中的参数类型从一种类型替换为另一种类型 我在 stackoverflow 上找到了其他答案 即this one https stackoverflow com questions 11159697 repl
  • 修改文本文件而不读入内存

    我试图找出一种修改文本文件 特别是删除特定行 的方法 而无需将文件的大部分读取到内存中或重写整个文件 这里讨论的是大于主内存约 15 50 Gigs 的文件 附 我正在使用Linux 你不会逃避创建一个新文件 所以就硬着头皮去做吧 使用gr
  • 在汇编中显示两位数? [复制]

    这个问题在这里已经有答案了 我对汇编编程完全陌生 在课堂作业的示例中 需要将两个数字相加并显示总和 我发现神秘的是当其是两位数时显示总和 这是我的代码 mov al num1 mov bl num2 add al bl add ax 303