assembly - (NASM)汇编程序输出2个数字中较大的问题
问题描述
我正在尝试制作一个程序来比较两个数字 x 和 y (在代码中预定义)并输出一条消息说“最大的数字是”,然后是更大的数字。但是,它有一个非常奇怪的错误,很难解释。
- 如果输出消息是“最大数字是”,它总是将 x 作为最大数字并输出。它还在消息前输出一个 h,所以它说“h最大的数字是 x”
- 如果我在 "The" 中的 T 之前添加任何字符,它总是将 y 作为最大的,并且仍然在消息前输出一个 h,例如 "hdThe maximum number is y"
当然,如果我在消息中加入其他字符,它也会把事情搞砸。这是我的代码:
section .text
global _start
_start:
mov eax, [x]
sub eax, '0'
mov ebx, [y]
sub ebx, '0'
cmp eax, ebx
ja case1
case2: add ebx, '0'
mov [big], ebx
jmp next
case1: add eax, '0'
mov [big], eax
next: mov ecx, msg
mov edx, len
call cout
mov ecx, big
mov edx, 1
call cout
mov eax, 1
int 0x80
cout: mov ebx, 1
mov eax, 4
int 0x80
ret
section .data
big db 0
x db '9'
y db '8'
msg db "The biggest number is "
len equ $ - msg
segment .bss
sum resb 1
解决方案
推荐阅读
- python - selenium instagram bot,但 xpath 不工作
- python - 一个单元格python中的PDF数据到csv
- amazon-web-services - 包装 S3 URL 并从下载文件中删除 S3 url
- asp.net - 实体框架 - “上下文正在代码优先模式下使用,代码是从 EDMX 文件生成的......”
- git - AndroidStudio 提交更改不显示其他模块 git
- swift - 从字符串数组中获取新的字典数组,用于在集合视图中显示
- xcode - 检查服务菜单中的服务是否可用
- ruby-on-rails - 如何将我的更改应用到从 Github 存储库上的模板生成的应用程序
- chart.js - 在 ChartJs 中使用极地面积图独立显示百分比和值
- jsf - 未捕获的 ReferenceError:当 javax.faces.PROJECT_STAGE 为 Production 时未定义 mojarra