Autor Beitrag
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Do 26.01.06 19:52 
Hallo!

Hab mal angefangen mir etwas assembler beizubringen und bin nun (nach dem obligatorischen 'Hello World' ;) ) beim Teilen angelangt.
Möchte einfach 42 durch 11 teilen.
(Da kommt bekanntermaßen 3 Rest 9 raus.
der rest kommt ins ah register und das ergebnis ins al)

Hier mein Quelltext:
ausblenden Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
org 100h
start:
  mov ax,[divident]
  div [divisor]
  mov [ergebnis],al
  mov [resti],ah
  mov ah,4Ch
  int 21h
section .date
  divident dw 2Ah
  divisor dw 0Bh
  resti dw 00h
  ergebnis dw 00h

Wer sich wundert warum ich 'resti' statt 'rest' schreibe: mit 'rest' kommen zwei compilerfehler (Zeilen 6,12). Mit 'resti' nur einer in Zeile 4. Der macht mir zu schaffen.

Hoffe mir kann jemand helfen!

MMMichael


Moderiert von user profile iconChristian S.: Topic aus Off Topic verschoben am Sa 28.01.2006 um 09:51
tommie-lie
ontopic starontopic starontopic starontopic starontopic starofftopic starofftopic starofftopic star
Beiträge: 4373

Ubuntu 7.10 "Gutsy Gibbon"

BeitragVerfasst: Do 26.01.06 21:19 
user profile iconmmmichael hat folgendes geschrieben:
ausblenden Quelltext
 
4:
{ ... }
  div [divisor]
einer in Zeile 4. Der macht mir zu schaffen.
Du möchtest die Syntax für DIV im IA Software Developer's Manual (S. 3-253) nachschauen. ;-)
Da steht eine große Auswahl an Operatorgrößen zur Verfügung. Woher soll der Prozessor nun wissen, wieviele Byte er als Divident annehmen soll? Du musst ihm also mitteilen, was tu tun ist. Im NASM geht das, indem du einfach "word" vor den Ausdruck stellst, da dein Divident in der data-Section nur ein Word groß ist:
ausblenden Quelltext
1:
div word [divisor]					
.
Assembliert mit NASM 0.98.38 ohne Fehlermeldungen.


Edit: Byte durch Word ersetzt. Du solltest dir angewöhnen, Daten in hexadezimaler Schreibweise immer in Zielgröße anzugeben. Beispielsweise 000Fh für ein Word mit dem Wert 255. Dann muss man nicht auf den Präfix achten, sondern sieht gleich, wie breit die Daten sind, die man haben will.

_________________
Your computer is designed to become slower and more unreliable over time, so you have to upgrade. But if you'd like some false hope, I can tell you how to defragment your disk. - Dilbert
mmmichael
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Fr 27.01.06 15:11 
Okay, Vielen Dank! :think: