I가 연습 간단한 문제를 통해 작동하고, 그리고 하나의 문제는 출력을 다음 번호를 읽도록하고, 그 수 플러스 예 1.리눅스 NASM 어셈블리 표시 입력 더하기 1
:
Please enter a number: 4
5
이제 입력과 출력이 쉬워야합니다. 하지만 내 프로그램이 여러 자리 숫자를 처리 할 수있게 만들고 싶습니다. 그리고 그것은 내가 곤란한 곳입니다. 왜냐하면 999의 입력이 주어지면 내 프로그램에서 마지막 9를 0으로 만들고 10을 1 열을 더하는 방법을 알 수 있습니까? 그런 다음 다른 숫자를 추가하여 숫자를 1000으로 만드는 방법을 어떻게 알 수 있습니까?
여기 내 코드는 지금까지 있습니다 :
는SECTION .data
msg db "Please enter a number: ",0
msglen EQU $-msg
sz EQU 32
NUL EQU 0
len EQU 32
SECTION .bss
num resb len
SECTION .text
GLOBAL _start
_start:
Msg: ; display the message
mov eax, 4
mov ebx, 1
mov ecx, msg
mov edx, msglen
int 80h
Read: ; read in the number
mov eax, 3
mov ebx, 1
mov ecx, num
mov edx, len
int 80h
Length: ; Find length of string
mov eax, num
mov ebx, 0
loop:
cmp BYTE[eax], NUL
je Set
inc eax
inc ebx
jmp loop
Set: ; set up the registers and variables
mov ecx, num
Print: ; main section - prints out the number plus 1
cmp BYTE[ecx], NUL
je Exit
mov eax, 4
mov ebx, 1
mov edx, 1 ; NOTE- does not yet add 1 to the number
int 80h
inc ecx
jmp Print
Exit: ; exits safely
mov eax, 1
mov ebx, 0
int 80h
누군가는 어떻게이 문제를 수행하는 나에게 보여 주시겠습니까? 나는 단지 추가 부분을 이해할 수 없다. 최대 32 비트까지 여러 자릿수를 인쇄 할 수 있지만 그 추가는 수수께끼 일뿐입니다. 사전에
감사합니다,
Rileyh
알고리즘을 지적 해 주셔서 감사합니다. – Progrmr