Показать сообщение отдельно
Старый 28.05.2005, 00:27     # 1
ELFonok
Guest
 
Сообщения: n/a

помогите с assembler

Помогите пожалуйста переделать немного следующую програмку:


LOCAL
.286c
code segment word
Start:
begin proc far
assume cs:code,ds:data,es:data
mov ax,1130h
mov bh,03h
int 10h
push es

pop ds
mov si,bp
mov ax,data
mov es,ax
lea di,outfont
mov cx,128*8
rep movsb
push es
push di
mov ax,1130h
mov bh,03h
int 10h
push es
pop ds
mov si,bp
pop di
pop es
mov cx,128*8
rep movsb
mov ax,0013h
int 10h
mov ax,data
mov ds,ax
lea si,outtext
next: lodsb
cmp al,0
je bex
call putchar
inc word ptr px
jmp next
bex: xor ax,ax
int 16h
cmp al,1bh
jz @@Exit
mov ah,4ch
int 21h
begin endp

@@Exit:
mov ax,03h
int 10h
mov ax,04c00h
int 021h

putchar proc
pusha
mov cl,byte ptr gy
mul cl
lea si,outfont
add si,ax

mov ax,0a000h
mov es,ax
mov ax,word ptr py
mul byte ptr gy
mul word ptr lx
mov di,ax
mov ax,word ptr px
mul byte ptr gx
add di,ax

mov cl,byte ptr gy
xor ch,ch
bl1: push cx
mov ah,80h
mov cl,byte ptr gx
xor ch,ch

bl2: test byte ptr [si],ah
jz zero
mov al,byte ptr color
mov byte ptr es:[di],al
zero: shr ah,1
inc di
loop bl2

inc si
mov bl,byte ptr gx
xor bh,bh
sub di,bx
add di,word ptr lx
pop cx
loop bl1
popa
ret
putchar endp
code ends


data segment word
outtext db 'HeLlO UsEr', 0
outfont db 256*8 dup (0)
px dw 2
py dw 10
gx db 8
gy db 8
lx dw 320
ly dw 200
color db 0fh
data ends

segment_stack segment stack
db 4096*4 dup (0)
segment_stack ends
end start
end

Это программа выводит на экран символы 8х8, а мне нужно 16х16.
Где подправить?
Помогите плз.