fügen Sie zwei stellige zahlen in NASM(Linux)
Möchte ich hinzufügen, zwei-stellige zahlen in NASM(Linux). Fügen Sie zwei einfache zahlen, ich verwende den folgenden code:
section .text
global _start ;must be declared for using gcc
_start: ;tell linker entry point
mov eax,'3'
sub eax, '0'
mov ebx, '4'
sub ebx, '0'
add eax, ebx
add eax, '0'
mov [sum], eax
mov ecx,msg
mov edx, len
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov ecx,sum
mov edx, 1
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db "The sum is:", 0xA,0xD
len equ $ - msg
segment .bss
sum resb 1
Das Ergebnis der code ist 7.Aber wenn trage ich die Nummer 17 im register "eax", zumbeispiel das Ergebnis ist nicht korrekt.In diesem Fall 5.Sagen Sie mir bitte, was ist das problem? Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Hier ist dein Beispiel mit ein wenig Aufräumen zu helfen, machen es leichter zu Lesen.
Vorschlag: diese Art der Konsistenz wird erheblich verbessern Sie Ihr image in der öffentlichkeit.
Aber hey, nette Kommentare, die ich Lesen könnte, Ihren code und es verstehen (das ist, warum ich beschlossen, Sie zu beantworten)
Okay, nun, wie Ihr Kommentar, "..., Aber wenn ich tragen die Nummer 17 im register "eax", zumbeispiel das Ergebnis ist nicht korrekt."
Kann ich mir vorstellen !
Frage, wenn Sie "...tragen die Nummer 17 im register eax..." machst du es so ?...
Wenn dem so ist, langsam nach unten und werfen Sie einen Blick auf deinen code Schritt für Schritt über die debug.
Ich glaube, dass das, was Sie sehen, ist, dass Sie das wirklich getan...
Obwohl es sein könnte
Interessantes Konzept. Ich habe noch nie so etwas getan. Was auch immer.
Was mehr ist, wenn Sie mit diesem Ort zu speichern, die gleiche Anzahl...
Haben Sie nur ein byte.
Gut ich kann sagen, dein Beispiel-code beschränkt sich auf einstellige zahlen.
Nun denn, da Ihr label
sum
reserviert hat nur ein byte; 8 bit, Sie können das problem sehen, wie Sie das speichern von 32 bit gibt. (Gut, man versucht; es funktioniert nicht.) Keine Ahnung, was passiert, wenn Sie tun, dass. Möchten Sie wahrscheinlich zu überdenken Struktur.Als für warum 17 wird 5, keine Ahnung hier.
Lassen Sie uns wissen, ob dies hilft Ihnen. Die Montage ist great stuff. Wie sind Sie persönlich zu erleben, der ursprüngliche Gedanke Anpassung kann seltsam für das Gehirn, kann es nicht !