fix: correction d'un bogue dans le passage de parametre avec \ dans print Ajout des fonction d'affichage d'entier dans print Ajout de gestion de pointeur long pour les chaines

This commit is contained in:
Nicolas Hordé 2004-11-23 00:38:12 +00:00
parent 5a26295438
commit ccf990b896
1 changed files with 105 additions and 23 deletions

View File

@ -78,9 +78,13 @@ print PROC FAR
mov cl,byte ptr [si+1] mov cl,byte ptr [si+1]
cmp cl,'c' cmp cl,'c'
je @@showchar je @@showchar
cmp cl,'i' cmp cl,'u'
je @@showint je @@showint
cmp cl,'j' cmp cl,'v'
je @@showfixint
cmp cl,'w'
je @@showintr
cmp cl,'i'
je @@showsigned je @@showsigned
cmp cl,'h' cmp cl,'h'
je @@showhex je @@showhex
@ -119,6 +123,24 @@ print PROC FAR
add di,4 add di,4
jmp @@strinaize0 jmp @@strinaize0
@@showfixint:
push dword ptr [offset pointer+di+2]
add di,4
push word ptr [offset pointer+di+2]
add di,2
call showfixint
add si,2
jmp @@strinaize0
@@showintr:
push dword ptr [offset pointer+di+2]
add di,4
push word ptr [offset pointer+di+2]
add di,2
call showintr
add si,2
jmp @@strinaize0
@@showsigned: @@showsigned:
call @@Chosesize call @@Chosesize
call showsigned call showsigned
@ -135,18 +157,40 @@ print PROC FAR
jmp @@strinaize0 jmp @@strinaize0
@@showstring: @@showstring:
cmp byte ptr [si+2],'P'
je @@showstringpointer
push word ptr [offset pointer+di+2] push word ptr [offset pointer+di+2]
call showstring call showstring
add si,2 add si,2
add di,2 add di,2
jmp @@strinaize0 jmp @@strinaize0
@@showstringpointer:
push ds
mov ds,[offset pointer+di+2+2]
push word ptr [offset pointer+di+2]
call showstring
add si,3
add di,4
pop ds
jmp @@strinaize0
@@showstring0: @@showstring0:
cmp byte ptr [si+2],'P'
je @@showstring0pointer
push word ptr [offset pointer+di+2] push word ptr [offset pointer+di+2]
call showstring0 call showstring0
add si,2 add si,2
add di,2 add di,2
jmp @@strinaize0 jmp @@strinaize0
@@showstring0pointer:
push ds
mov ds,[offset pointer+di+2+2]
push word ptr [offset pointer+di+2]
call showstring0
add si,3
add di,4
pop ds
jmp @@strinaize0
@@showbcd: @@showbcd:
call @@Chosesize call @@Chosesize
@ -229,6 +273,8 @@ print PROC FAR
je @@showline je @@showline
cmp cl,'g' cmp cl,'g'
je @@goto je @@goto
cmp cl,'h'
je @@gotox
cmp cl,'c' cmp cl,'c'
je @@color je @@color
cmp cl,'m' cmp cl,'m'
@ -249,30 +295,58 @@ print PROC FAR
jmp @@no0 jmp @@no0
@@color: @@color:
mov cl,[si+2] mov ah,[si+2]
sub ah,'0'
mov cl,ah
shl cl,3
add cl,ah
add cl,ah
add cl,[si+3] add cl,[si+3]
sub cl,'0' sub cl,'0'
sub cl,'0'
mov ah,21 mov ah,21
int 47h int 47h
add si,4 add si,4
jmp @@strinaize0 jmp @@strinaize0
@@gotox:
mov ah,24
int 47h
mov ah,[si+2]
sub ah,'0'
mov bh,ah
shl bh,3
add bh,ah
add bh,ah
add bh,[si+3]
sub bh,'0'
mov ah,25
int 47h
add si,4
jmp @@strinaize0
@@setvideomode: @@setvideomode:
mov al,[si+2] mov ah,[si+2]
sub ah,'0'
mov al,ah
shl al,3
add al,ah
add al,ah
add al,[si+3] add al,[si+3]
sub al,'0' sub al,'0'
sub al,'0'
mov ah,0 mov ah,0
int 47h int 47h
add si,4 add si,4
jmp @@strinaize0 jmp @@strinaize0
@@setfont: @@setfont:
mov cl,[si+2] mov ah,[si+2]
sub ah,'0'
mov cl,ah
shl cl,3
add cl,ah
add cl,ah
add cl,[si+3] add cl,[si+3]
sub cl,'0' sub cl,'0'
sub cl,'0'
mov ah,3 mov ah,3
int 47h int 47h
add si,4 add si,4
@ -315,14 +389,22 @@ print PROC FAR
jmp @@strinaize0 jmp @@strinaize0
@@goto: @@goto:
mov bh,[si+2] mov ah,[si+2]
sub ah,'0'
mov bh,ah
shl bh,3
add bh,ah
add bh,ah
add bh,[si+3] add bh,[si+3]
sub bh,'0'
sub bh,'0' sub bh,'0'
; ;
mov bl,[si+5] mov ah,[si+2]
add bl,[si+6] sub ah,'0'
sub bl,'0' mov bl,ah
shl bl,3
add bl,ah
add bl,ah
add bl,[si+3]
sub bl,'0' sub bl,'0'
mov ah,25 mov ah,25
int 47h int 47h