Тема: Ассемблер
Показать сообщение отдельно
Старый 10.07.2011, 16:00   #24
IT писатель
 
Аватар для KimberLike
 
Регистрация: 15.05.2009
Адрес: Южная Россия
Сообщений: 221
Репутация: 203 [+/-]
Всем доброго времени суток!
Нужна помощь от знатаков языка Assmbler. Наверное, таких тут мало, т.к. и язык то по сути нафиг никому не нужен, но тем не менее я рискну спросить.
Нужно раскомментировать одну программку:

1. Составьте и наберите программу типа .СОМ для распечатки текущего каталога, воспользовавшись буфером обмена данными (DТА) из PSP
2. Откомпилируйтe, скомпонуйте и выполните составленную программу.
3. Установите свой DTA, используя функцию DOS прерывания int 21h. и снова распечатайте текущий каталог.
4. Смените текущий каталог и снова распечатайте файлы из нового каталога.

Код:
Скрытый текст:
message macro param
mov ah,9
lea dx,param
int 21h
endm

izobr macro
mov ah,2
mov dl,10
int 21h
mov ah,2
mov dl,13
int 21h
endm

dseg segment
error db 10,13,'ERROR',10,13,'$'
finish db 10,13,'==END of catalog',10,13,'$'
mess db 10,13,'file of shablon not detected',10,13,'$'
fewpar db 10,13,'Error! Empty command string!',10,13,'$'
dta db 2ch dup('$')
file db 14 dup (0)
dseg ends
cseg segment
assume cs:cseg, ds:dseg
start : mov ax,dseg
mov ds,ax
mov al,byte ptr es:[80h]
cmp al,0
je malo ;если равно, то переход на malo
mov si,2
mov di,0
readcom: mov al,byte ptr es:[80h+si] ; чтение командной строки
cmp al,13 ; сравнение al с числом 13
je da_next
mov file[di],al ; перемещение в file по смещению di
inc si ; увеличиваем на еденицу si
inc di
jmp readcom ; переход
jmp da_next
malo: message fewpar ; нет командной строки
jmp exit ; переход на выход
da_next: mov ah,1ah ; установить свой буфер обмена информацией
lea dx,dta
int 21h
mov ah,4eh ; поиск файла
lea dx,file
mov cx,11111111b ; счетчик
int 21h
jc err1
message dta[1eh]
izobr
prec: mov si,0
mov cx,13
clear: mov dta [1eh][si],'$'
inc si
loop clear
mov ah,4fh
lea dx,file
mov cx,11111111b
int 21h
jc cheke
message dta[1eh]
izobr
jmp prec
cheke: cmp ax,18
je da_last
message error
izobr
jmp exit
jmp prec
da_last: message finish
izobr
jmp exit
err1: message mess
exit: mov ah,8
int 21h
mov ah,4ch
int 21h
cseg ends
end start


Заранее ОГРОМНОЕ спасибо!
__________________
PlayStation 3 user
KimberLike вне форума  
Ответить с цитированием