mov es, 0: invalid combination of opcode and operands

Friedrich

Stammuser
Code:
[org 0x7c00]
; + Boot-Sektor
; |

mov [diskNum], dl
mov ah, 2        ; command: read sectors
mov al, 1        ; amount of sectors to read
mov ch, 0        ; cylinder 0
mov cl, 2        ; sector number 2
mov dh, 0        ; head 0
mov dl, [diskNum]    ; drive number
mov es, 0        ; -
mov bx, 0x7e00        ; where to store read data es:bx
int 0x13


mov ah, 0x0e
mov al, [0x7e00]
int 0x10

jmp $

; |
; +- Variablen
;    |
diskNum: db 0



; boot-Signatur
times 510-($-$$) db 0
db 0x55, 0xaa



; Sektor 2
times 512 db 'A'

boot.asm:12: error: invalid combination of opcode and operands

Zeile 12 hat gesagt.:

Sehe ich das richtig, dass MOV nicht mit ES funktioniert?
 

CDW

Moderator
Mitarbeiter
Nicht ganz. MOV ES akzeptiert keine Konstante. Allzwerkregister sollte aber gehen.
Also MOV ES, AX
push und pop sollte auch klappen, nur nicht vergessen vorher SS und SP auf einen sinnvollen Wert zu setzen (eigentlich sollte man alle Segmentregister inizialisieren):
Code:
BASE equ 07c00h
STACK_BASE equ BASE-8

cli             ;disable interrupts
cld             ;set direction flag  
xor ax,ax
mov ds,ax
mov es,ax
mov ss,ax
mov sp,STACK_BASE

sti ;ok, enable interrupts
 
Zuletzt bearbeitet:
Oben