Assembly grafika - függőleges csík

Assembly grafika - függőleges csík
2010-08-24T18:17:56+02:00
2010-08-25T10:32:11+02:00
2022-11-18T22:15:35+01:00
Latkóczy Dávid
Üdv!

Ma készítettem el életem első assembly programját.
Eddig nagyon tetszik a dolog.
De akadt egy kis problémám.

Most egy boot progit csinálgatok, amit átfordítok com-ra, és floppyra írom, VirtualBoxban tesztelem.

A cél az lenne, hogy egy keretet rajzoljak.
Ehez 4 vonal kell (felső, alsó, bal, jobb), amiket ciklussal szeretnék kirajzolni.

A két vízszintes vonalig eljutottam.
De a függőleges valamiért nem tetszik neki.
nasmw.exe hibaüzenete: "keret.asm:28: error: invaild effective address"

Mit rontottam el?
(Nem a hibaüzenetet kell lefordítani, arra vagyok kíváncsi, hogy mi a megoldás)

A forráskód (keret.asm):

org 7c00h MOV AX,13H ; Grafikus kepernyo bekapcsolasa INT 10H MOV AX,0A000H ; Kepernyo szegmens cimenek beallitasa ES-be MOV ES,AX ;teteje MOV CX,318 ; (320 keppont van egy sorban) MOV DI,1 ; DI kezdeti értéke ciklus1: MOV byte[ES:2*320+DI],7 ; kiírás 7-es szín (szürke) INC DI DEC CX JNZ ciklus1 ;ciklus vége ;alja MOV CX,318 ; (320 keppont van egy sorban) MOV DI,1 ; DI kezdeti értéke ciklus2: MOV byte[ES:198*320+DI],7 ; kiírás 7-es szín (szürke) INC DI DEC CX JNZ ciklus2 ;ciklus vége ;baloldal MOV CX,200 ; (200 keppont van egy oszlopban) MOV DI,3 ; DI kezdeti értéke ciklus3: MOV byte[ES:DI*320+2],7 ; kiírás 7-es szín (szürke) INC DI DEC CX JNZ ciklus3 ;ciklus vége MOV AH,0 ; Varakozas egy billentyu lenyomasara INT 16H
Mutasd a teljes hozzászólást!
A teljes keret:

mov edi,320*199-1 mov ebx,320*199 mov ax,0707h mov ecx,320 ; fuggoleges vonalak .repeat mov es:[di],ax sub edi,ecx .until CARRY? inc edi ;vizszintes vonalak .repeat mov es:[di],al mov es:[di+bx],al inc edi .untilcxz
Mutasd a teljes hozzászólást!

Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd