Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ Дамп памяти Bios

Автор: dron4ik 12.12.2009 20:34

Всем привет. Программа выводит область памяти биоса(работает верно) незнаю как сделать выход из программы при нажатии на клавишу esc..подскажите пожалуйста кто знает.

codesg  segment para 'code'
assume cs:codesg,ds:codesg,ss:codesg,es:codesg
org 100h
begin: jmp main
tabl db '0123456789ABCDEF'
main proc near
mov cx,25000
mov ax, 0
mov es, ax

m3: push cx
mov ah,02
mov bh,00
mov dh,0
mov dl,0
int 10h
mov si,0400h
mov cx,16
m2: push cx
mov cx,16
m1: push cx
lea bx,tabl
mov al,es:[si]
and al,0f0h
shr al,4
xlat
mov ah,09h
mov bh,00
mov bl,07h
mov cx,1
int 10h
mov ah,03
mov bh,00
int 10h
inc dl
mov ah,02h
mov bh,00
int 10h
lea bx,tabl
mov al,es:[si]
and al,0fh
xlat
mov ah,09h
mov bh,00
mov bl,07h
mov cx,1
int 10h
mov ah,03
mov bh,00
int 10h
inc dl
mov ah,02h
mov bh,00
int 10h
mov ah,09h
mov al,' '
mov bh,00
mov bl,07h
mov cx,1
int 10h
mov ah,02h
mov bh,00
inc dl
int 10h
inc si
pop cx
loop m1
mov ah,03
mov bh,00
int 10h
mov ah,02
mov bh,00
inc dh
mov dl,0
int 10h
pop cx
loop m2
pop cx
dec cx
cmp cx,0
je ex

mov ah, 0
add dx, 91
int 1Ah
add dx, 91
mov bx, dx
repeat: int 1Ah
cmp dx, bx
jne repeat

jmp m3
ex: ret
main endp
codesg ends
end begin

Автор: xds 14.12.2009 17:21

Перед выходом:

pause:
mov ah,8
int 21h
cmp al,27
jne pause


Не, все хуже.

Автор: xds 14.12.2009 17:53

        add dx, 91
mov bx, dx
repeat:
;------------------------------
mov ah,1
int 16h
jz no_key
xor ax,ax
int 16h
cmp al,27
je ex
jmp repeat
no_key:
xor ax,ax
int 1Ah
cmp dx, bx
jb repeat
;------------------------------
jmp m3
ex: ret