Konvertieren von dezimal zu Binär in assembler
Ich brauche Hilfe mit mein erstes Programm in assembler.
Ich habe zum konvertieren der Werte vom Benutzer eingegeben von dezimal zu Binär.
Ich habe keine Ahnung, wie kann ich die Werte als dezimal, und was soll ich als Nächstes tun.
könnte jemand beauftragen, mir Schritt für Schritt, was als Nächstes tun.
.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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Denke ich, dass es ok für Sie.
setc al
würde auch funktionieren, anstattadc eax,0
, und werden effizienter bei einigen CPUs.xor eax,eax
sets CF=0. Vorshl
. (Und verwendensetc al
stattadc
für Effizienz). Also dieLOOP
Unterricht zu langsam ist, verwenden Sie es nicht. es sei denn die Optimierung für die code-Größe über der Drehzahl. Auch Sie habenmov ebx, eax
innerhalb der Schleife. Wahrscheinlich wäre besser gewesen, zu testen, Ihre asm-vor der Buchung.eax
, und so ist der Rückgabewert. Das ist überhaupt nicht standard-oder weit verbreitet. (Auch, dies ist eine 16-bit-DOS-Frage, obwohl der Algorithmus ist der gleiche.)shl
verschiebt sich ein wenig in CF, aber dannxor eax,eax
löscht CF voradc eax,0
(das wäre effizienter als geschriebensetc al
)Nicht ganz klar, was Sie zu tun versuchen. Ich denke, "dezimal nach Binär", aber die Eingabeaufforderung sagt "Geben Sie binären Wert". Ich würde dass bedeuten, eine Reihe von "1"en und "0"en. Ich würde nicht Fragen 'em für "dezimal" den Wert entweder - du bekommst wie "1.23", die Sie nicht ausgestattet zu handhaben. Fragen Sie einfach 'em für eine Zahl. Vielleicht "eine Zahl kleiner als 65536", was wohl(?) das, was Sie wollen.
Warnung! Ungetestet-code Voraus!
Nun ich denke, das Sie drucken möchten der binary ("1"en und "0"en) - Darstellung der Zahl...
Schon eine Weile, da ich getan habe, DOS, so kann es zu schweren Fehlern, aber es kann Ihnen einige Ideen.