在汇编程序中将十进制转换为二进制

2024-04-14

我的第一个汇编程序需要帮助。 我必须将用户输入的值从十进制转换为二进制。 我不知道如何将值显示为小数,以及下一步应该做什么。 谁能一步一步指导我下一步做什么。

    .model small
    .stack 100h`

    .data
            txt1 db "Enter binary value:" ,10,13, "$"
            txt2 db "BIN: " ,10,13, "$"


    .code

        main proc
        mov ax, @data
        mov ds, ax
        ;clear screen
        mov ah,0fh
        int 10h
        mov ah,0
        int 10h
        ;show first text
        mov ah, 9
        mov dx, offset txt1
        int 21h
        call Number


        main endp


        Number proc
        mov cx,5
        xor bx,bx

        read:
        mov ah,0
        int 16h
        cmp al,'0'
        jb read
        cmp al, '9'
        ja read
        mov ah,0eh
        int 10h
        loop read
        Number endp

        mov ax, 4c00h
        int 21h

        end main

我想这对你来说没问题。

; Read an integer from the screen and display the int in binary format
; and continue until number is negative.
again:            ; For loop
    call read_int ; take the integer from screen
    cmp eax,0     ; look if number is not negative
        JL end:       ; if less than zero program ends.
    mov ecx,32    ; for loop we set ecx to 32 ; ATTENTION we not specified type. So compiler will get error.

    mov ebx,eax   ; we will lost our number in eax, so I take it to ebx
START:
    xor eax,eax   ; eax = 0
    SHL ebx,1     ; shift the top bit out of EBX into CF
    ADC eax,0     ; EAX  = EAX + CF + 0 ADD CARRY FLAG, so eax is zero we add zero. The new eax will exact value of Carry Flag which is out bit.
    call print_int ; Then we print the CF which we took the eax.
LOOP start:   ; Loop looks ecx if not 0 it goes start.  
call print_nl ; For next number we print a new line
JMP again:    ; For take new number

    END:      ; End of the program.

setc al也可以代替adc eax,0,并且在某些 CPU 上效率更高。

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

在汇编程序中将十进制转换为二进制 的相关文章

  • 如何在汇编程序中使用 C 库?

    我想知道如何用汇编语言编写文本编辑器 但现代操作系统需要 C 库 特别是对于它们的窗口系统 我找到了这个page http pengu1n is programmer com posts 8304 html 这对我有很大帮助 但我想知道是否
  • 将 C 转换为 MIPS - 嵌套数组

    我正在学习 MIPS 汇编语言 在书中看到了这个例子 对我来说这似乎是不正确的 如果是的话 这将不是我在本书中发现的第一个错误 变量f and g被分配寄存器 s0 and s1分别是数组的基地址A and B are s6 and s7分
  • 现代 x86 硬件不能将单个字节存储到内存中吗?

    说到 C 的并发内存模型 Stroustrup 的C 编程语言 第 4 版 第 1 节 41 2 1 说 就像大多数现代硬件一样 机器无法加载或存储小于单词的任何内容 然而 我的 x86 处理器已经有几年的历史了 它可以并且确实存储小于单词
  • 如何解析具有多个小数点的字符串

    我想将诸如 10 0 20 之类的字符串解析为数字 以便比较 C net 中具有相同格式的另一个字符串 例如 我将比较这两个数字 看看哪个数字小于另一个数字 如果 10 0 30 我不确定应该使用哪种解析方法 因为在这种情况下 decima
  • 当非特权用户运行 C/asm 程序时,会对 Linux 造成什么危害?

    我一直在考虑一种场景 让用户 可以是任何人 可能有恶意 提交在 Linux PC 我们称之为基准节点 上运行的代码 目标是为单线程例程创建一种自动化基准测试环境 假设一个网站向代理发布了一些代码 该代理将此代码交给基准节点 而基准节点仅与代
  • 汇编编程语言:程序仅当输入为 ESC 时退出,并在退出前要求确认(y/n),否则循环

    我只是汇编语言编程的初学者 我们的第一个任务是让程序仅在输入为 ESC 时退出 退出之前请求确认 y n 否则循环 我知道 ESC 在 ASCII 代码中具有等效值 但我对插入位置或是否需要添加更多内容感到困惑 请帮我 这是程序 model
  • 左/右旋转进位的实际用途

    循环左进位和循环右进位指令有哪些实际用途 在我的汇编课上 我们无法想出一个有用的好例子 如果要将位从一个操作数移出并移入另一个操作数 SHL EAX 1 move sign bit of EAX RCL EDX into LSB of ED
  • 在汇编中显示两位数? [复制]

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

    我以前有过 here https stackoverflow com questions 4920610 c class function in assembly 已经表明 C 函数不容易用汇编表示 现在我有兴趣以一种或另一种方式阅读它们
  • Clang 使用 -nostdlib 生成崩溃代码

    我正在尝试为可执行文件设置自己的运行时环境 但无法使用 clang v3 4 1ubuntu1 目标 x86 64 pc linux gnu 来生成没有段错误的可执行文件 我已将问题简化为以下内容 如果我有一个文件 crt1 c 除了满足
  • 即使我确实为变量设置了初始值,数据段也没有被初始化

    我已经编写了一个代码 该代码应该生成某种数字列表 但是即使我为它们分配了初始值 我的数据段变量也没有被初始化 This is how DS 0000 looks when I run it 这是我的代码 但数据段只保留垃圾值 MODEL s
  • 如何让c代码执行hex机器代码?

    我想要一个简单的 C 方法能够在 Linux 64 位机器上运行十六进制字节码 这是我的 C 程序 char code x48 x31 xc0 include
  • 为什么 float() 会截掉尾随零?

    该代码成功地将一个包含许多数字的大文件裁剪为几个包含数字的较小文本文件 但它产生了一个有趣的怪癖 所有数字都应精确到小数点后四位 例如 2 7400 但它们打印为 2 74 这是文件的片段 0 96 0 53 0 70 0 53 0 88
  • 如何在汇编语言中换行打印多个字符串

    我试图在汇编中的不同行上打印多个字符串 但使用我的代码 它只打印最后一个字符串 我对汇编语言非常陌生 所以请耐心等待 section text global start start mov edx len mov edx len1 mov
  • NASM 轮班操作员

    您将如何在寄存器上进行 NASM 中的位移位 我读了手册 它似乎只提到了这些操作员 gt gt lt lt 当我尝试使用它们时 NASM 抱怨移位运算符处理标量值 您能解释什么是标量值并举例说明如何使用 gt gt and lt lt 另外
  • Visual Studio 2017 上的简单装配程序

    386 model flat c stack 100h printf PROTO arg1 Ptr Byte data msg1 byte Hello World 0Ah 0 code main proc INVOKE printf ADD
  • 是否有将二进制数据打包成 UTF-16 字符串的标准技术?

    在 NET中 我有任意二进制数据存储在byte 例如图像 现在 我需要将该数据存储在string 旧 API 的 注释 字段 有没有标准技术packing将此二进制数据转换为string 我所说的 打包 是指对于任何相当大且随机的数据集 字
  • 如何转换十进制?到小数

    可能这是一个简单的问题 但我正在尝试所有的转换方法 并且仍然有错误 你能帮我吗 小数 可为空的小数 到小数 有很多选择 decimal x decimal a decimal x works throws if x was null dec
  • 尝试使用 x86 程序集 GNU GAS 在数组索引处赋值时出现错误

    我在用x86GNU 与 GCC 的程序集 并尝试实现相当于以下内容的程序集c c int x 10 x 0 5 但是 当我尝试运行 使用命令 a out 我的汇编代码如下 第一次编译后gcc filename s 错误Segmentatio
  • 为什么在 Javascript 中添加两位小数会产生错误的结果? [复制]

    这个问题在这里已经有答案了 可能的重复 JavaScript 的数学有问题吗 https stackoverflow com questions 588004 is javascripts math broken 为什么 JS 搞砸了这个简

随机推荐

  • 在 Go 中生成长随机字符串的最快方法是什么?

    像 a zA Z0 9 字符串 na1dopW129T0anN28udaZ 或十六进制字符串 8c6f78ac23b4a7b8c0182d 我所说的 长 是指 2K 及更多字符 我的盒子上的速度约为 200MBps 显然还有改进的空间 ty
  • 是否还能获取Skype用户的在线状态?

    正如标题所说 API 服务发生 重大 变化后 是否仍然可以在 Skype 上查看用户的状态 在线 离线 忙碌 开发者部分现在看起来非常非常有限 http developer skype com http developer skype co
  • 从类库项目中的 App.config 读取

    我正在开发一个简单的类库项目 这会给我一个 dll 我想从配置文件中读取特定值 所以我在我的项目中添加了一个 App config 文件
  • 为什么 Linux/gnu 链接器选择地址 0x400000?

    我正在 Linux x86 64 上试验 ELF 可执行文件和 gnu 工具链 我已经链接并剥离 手动 Hello World 测试 global start text start mov 1 rax 转换为 267 字节 ELF64 可执
  • “&”和 std::reference_wrapper 之间的区别?

    我有以下代码 include
  • 开放固件设备树概述/参考手册

    我正在尝试为嵌入式 PowerPC 板设置驱动程序 今天执行此操作的正确方法是使用 OpenFirmware 设备树数据结构 dtb 文件 从 dts 文件编译 创建树非常简单 但是如何让我的设备驱动程序找到它的节点和其中的数据 我还没有找
  • 在棒棒糖之前的设备工具栏上添加标高/阴影

    我将我的 Android 应用程序更新为新的材料设计 但我还想向工具栏添加一些阴影或高度 似乎有一些 hacky 方法可以通过 images 9 patches 来完成此操作 但我想知道是否可以通过支持库来完成 就像CardView可以有海
  • 如何使用 Moq 对不同参数设置两次方法

    我想用最小起订量设置一个方法两次 但似乎最后一个方法覆盖了前面的方法 这是我的初始设置 string username foo string password bar var principal new GenericPrincipal n
  • Redux 表单中 中的 className

    我创建了一个 redux form 我想将 className 添加到每个字段以使用 css 自定义它们 每个字段的代码是
  • Android Google 日历“无法启动活动”

    Case 1我主持了 iCal 日历活动 icsAmazon AWS 上的文件及其 HTTP URL 集成在我的 Android 应用程序中 这是文件 https s3 ap southeast 1 amazonaws com endcar
  • 使不同纵横比的响应图像具有相同的高度

    我正在尝试找出一种方法 使响应式图像行具有相同的高度 而不管每个图像的纵横比或容器的宽度如何 实际图像文件的高度相同 但宽度不同 问题是 当容器变小时 在某些宽度下 舍入误差会导致图像的高度相差一个或两个像素 这是一个小提琴http jsf
  • 如何向导航栏添加阴影而不是默认边框

    我想替换默认边框UINavigationBar与阴影 有什么办法可以实现这一点吗 我尝试使用与向 UIView 添加阴影相同的方法 但它增加了导航栏的高度 尝试这个 self navigationController navigationB
  • Angular2创建一个显示外部网页内容的组件

    我需要创建一个显示另一个网页内容的组件 例如 如果我有 stackoverflow 站点 我想创建一个组件来执行 http 请求并通过我的应用程序显示内容 顺便说一下 外部网站只是 django rest swagger 要访问它 我每次访
  • 在 Rails 应用程序中使用自定义函数

    我试图遵循以下关于在 Rails 中使用自定义函数的答案中的简短示例 http stackoverflow com questions 2879679 where to put code snippets in rails 在 lib ma
  • SQL查询大约需要10 - 20分钟

    我有一个选择 没什么复杂的 Select from VIEW 该视图大约有 6000 条记录和大约 40 列 它来自 Lotus Notes SQL 数据库 所以我的 ODBC 驱动程序是 LotusNotesSQL 驱动程序 执行该查询大
  • 如何防止触摸空格键时键盘从数字变为字母?

    I have UITextFields在表格上输入值 其中一些字段只接受数字 我在用UIKeyboardTypeNumbersAndPunctuation对于键盘类型 以及shouldChangeCharactersInRange来过滤字符
  • git 我可以加快提交速度吗?

    我在共享文件夹中有一个大存储库 我在该文件夹的虚拟机中使用 git 一切都很好 但存储库很大 git 正在搜索所有目录和文件 当提交缓慢时 我无法将此存储库移出共享文件夹 我尝试过了git add特定文件和目录 但当我这样做时git com
  • 带有通配符的主干事件

    有没有办法监听命名空间的所有事件 所以当我听到这样的事件时 app vent on notification id function type console lof type 它将监听所有这样的事件 app vent trigger no
  • JavaScript - myArray.forEach 与 for 循环的细微差别

    我看到很多建议使用的问题 for var i 0 i lt myArray length i 代替 for var i in myArray 对于数组 由于迭代不一致 see here https stackoverflow com que
  • 在汇编程序中将十进制转换为二进制

    我的第一个汇编程序需要帮助 我必须将用户输入的值从十进制转换为二进制 我不知道如何将值显示为小数 以及下一步应该做什么 谁能一步一步指导我下一步做什么 model small stack 100h data txt1 db Enter bi