kod z poprzedniego tematu teraz wyglada tak:
format binary
use16
org 0x100
jmp start
string1 db "string numer jeden$"
bok:
push cx
mov cx, 1
mov ah, 0x02;pos
add dh, 1
int 0x10
mov ah, 0x09;write
int 0x10
pop cx
ret
macro print xx,yy,len,str:
{mov dh, xx
mov dl, yy
call pprint1
mov cx, len
call pprint2}
pprint1:
mov ah, 0x02
int 0x10
ret
pprint2:
mov ah, 0x09
mov si, cx
sub si, 1
petla:
mov al, [string1+si]
int 0x10
sub si, 1
loop petla
ret
start:
mov al, 0x02;80x25 text
int 0x10
mov ah, 0x09;write character and attribute at cursor position ;pasek tytulowy i menu
mov bl, 0x40;col
mov al, 0x00;char
mov cx, 160;ile
int 0x10
mov ah, 0x02
mov dh, 0
mov dl, 0
int 0x10
print 0,31,18
mov ah, 0x02 ;bg
mov dh, 2
mov dl, 0
int 0x10
mov ah, 0x09
mov bl, 0x70
mov al, 0x00
mov cx, 1760
int 0x10
mov bl, 0x74 ;dolny pasek
mov ah, 2
mov dh, 24
int 0x10
mov ah, 0x09
mov al, 0xDC
mov cx, 80
int 0x10
mov bl, 0x40 ;lewy i prawy pasek
mov ah, 2
mov dh, 1
int 0x10
mov al, 0x00
mov cx, 23
lewy:
call bok
loop lewy
mov ah, 2
mov dh, 1
mov dl, 79
int 0x10
mov cx, 23
prawy:
call bok
loop prawy
mov ah, 2
mov dh, 0
mov dl, 0
int 0x10
mov ax, 0x4c00
int 0x21
po wywolaniu makra print juz nic nas nie obchodzi, tylko rysuje sobie okienko. doszedłem do wniosku że przekazywanie argumentów przez makro jest 100x wygodniejsze, więc chwilowo na tym stanęło. pytanie tylko - jak w ten sposób przekazać dowolny string w miejsce string1? kombinowałem movem, kombinowałem lea, ale wszystko chce operować na obu bajtach rejestru.