Assembler: Stack overflow bei div

Gast #4735845
Lesenswert?
• ▲
▼
Hallo, ich habe folgenden Programmcode:

.data
      D    equ  10          ; Teiler
      Zahl DW 76          ; Zahl
      ERG     DW   0          ; Ergebnis

; 
------------------------------------------------------------------------ 
--
.stack  16
; 
------------------------------------------------------------------------ 
--
.code
.startup

  mov ax,zahl
  mov bx,D
  div bx
  add AL,AH
  and ax,00FFh
  add AX,30h
  mov ERG,AX

.exit

und das Problem, dass ein Stack overflow bei div bx kommt. Woher kommt 
dieser und wie löse ich das?
#4736028
Lesenswert?
• ▲
▼
rbx schrieb:
> Ich hätte ja jetzt div bl erwartet. Aber kannst du Teiler und Ergebnis
> nicht auch gleich so nennen, oder ist der Assembler (oder die Denke)
> noch aus der 8 Bit - Ära?

Naja, DIV BL und DIV BX unterscheiden sich zwar nicht mathematisch, aber 
DIV BX benötigt ja zusätzlich zum AX und BX Register noch DX für das 
Highword des Ausgangswertes und den Rest der Division im Ergebniss, man 
möchte bei Word/Byte ja kein zusätzliches Word Register unnötigerweise 
manipulieren (bzw. vor der Div. PUSHen und danach POPen)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren