gpt4 book ai didi

linux - 汇编语言问题...以及如何换行?

转载 作者:太空宇宙 更新时间:2023-11-04 11:34:07 25 4
gpt4 key购买 nike

我开始学习汇编语言。我需要做的程序非常简单。1 - 读取一个 4 位数字(可以是负数)2 - 输出输入数字的数字3 - 计算/输出输入数字的一半4 - 计算/输出输入数字的两倍

所以...这是代码...首先是数据部分

section .data ; Data segment
msgPrompt db 'Please enter a number ' ; Ask the user to enter a number
lenMsgPrompt equ $-msgPrompt ; The length of the message
msgNumber db 'The entered number is '
lenMsgNumber equ $-msgNumber
msgHalf db 'The half of the entered number is '
lenMsgHalf equ $-msgHalf
msgDouble db 'The double of the entered numbered is '
lenMsgDouble equ $-msgDouble

然后是未初始化的数据(供用户输入)

section .bss        ; Uninitialized data
userNumber resb 5
halfNumber resb 5
doubleNumber resb 5

然后……代码段……

    section .text       ; Code Segment

global _start
_start:

;Prompt the user
mov eax, 4
mov ebx, 1
mov ecx, msgPrompt
mov edx, lenMsgPrompt
int 80h

; Read and store the user input
mov eax, 3
mov ebx, 2
mov ecx, userNumber
mov edx, 5 ; 5 bytes (numeric, 1 for sign) of that information
int 80h

; Output the message 'The entered number is '
mov eax, 4
mov ebx, 1
mov ecx, msgNumber
mov edx, lenMsgNumber
int 80h

; Output the number entered
mov eax, 4
mov ebx, 1
mov ecx, userNumber
mov edx, 5
int 80h

; Output the message 'The half of the entered number is '
mov eax, 4
mov ebx, 1
mov ecx, msgHalf
mov edx, lenMsgHalf
int 80h

; Calculate the half of the number entered
mov eax, [userNumber]
shr eax, 1 ; Shift to the right by one bit
mov [halfNumber], eax

; Output half of the number entered
mov eax, 4
mov ebx, 1
mov ecx, halfNumber
mov edx, 5
int 80h

; Output the message 'The double of the entered numbered is '
mov eax, 4
mov ebx, 1
mov ecx, msgDouble
mov edx, lenMsgDouble
int 80h

; Calculate the double of the number entered
mov ebx, [userNumber]
shl ebx, 1 ; Shift the the left by one bit
mov [doubleNumber], ebx

; Output double of the number entered
mov eax, 4
mov ebx, 1
mov ecx, doubleNumber
mov edx, 5
int 80h

; Leave program
mov eax, 1
mov ebx, 0
int 0x80

这是最终结果... Here (我还没有足够的声誉来发布图片...)

如您所见,有问题...另外,我想在“数字的一半是 xxxxx”之后换行。

谢谢

最佳答案

看起来您正在对数字的 ASCII 码而不是数值进行算术运算。

关于linux - 汇编语言问题...以及如何换行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9280408/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com