Вопрос № 76056: здраствуйте.
у меня такой вопрос. где можна найти исходник для Turbo Assembler, который показывает формат компа IBM PC - АТ или ХТ. слышал что есть книжка "Р. Джордейн.- Справочник программиста персональных компьютеров типа IBM PC, XT и AT&q...Вопрос № 76088: Скажите где мне найти библиотеку import32.lib при компилирование Tasma32 если кто может скиньте на мой яшек спасибо devochka.russia@gmail.com простите что такой емайл???... Спасибо.!
..Вопрос № 76156: Доброго времени суток ! :)подскажите как лучше сделать:прочитать файл с помощью функции 3Dh прерывания int 21h.какой буфер лучше выбрать и как лучше вывести его содержимое на экран?...Вопрос № 76338: Здравствуйте уважаемые эксперты.
Подскажите пожалуйста, почему FASM под винду не хочет компилировать мою прогу под дос. А именно он ругается на директиву segment. Когда её нет - компилиться. Может в fasm-е не нужно описывать сегменты?...Вопрос № 76355: Здравствуйте уважаемые эксперты!
В главе 16-ть книги Олега Калашникова описываются способы защиты программ от отладки.
После ознакомления с первыми двумя примерами я действительно увидел, что после прохождения отладчиком защитной част...Вопрос № 76473: Здраствуйте!
Пишу лабораторную работу и встретил ошибку Need expression на вот таком блоке:
xor ax,ax
mov AH,3Fh
mov BX,0
mov CX,5
mov DX,offset buffer
int 21h
cmp AX,5h
JNE L1: ;вот здесь ошибка!!!
cld
le...Вопрос № 76500: Доброго времени суток, уважаемые эксперты.
Я попробовал создать загрузочный сектор на дискете, всё нормально вроде туда записалось, компьютер с нее грузится, но винда не видит дискету и говорит что он не отформатирована, можно было бы узнать как ...Вопрос № 76593: Здраствуйте!
Помогите пожалуйста!
Вообшем нужно сравнить слово в программе(переменная) со словом введёным с клавиатуры! Ввожу слово сравнивается длина слова, всё нормальо, а после сами слова, и здесь неправильно тоесть они не одинаковы(для ...Вопрос № 76637: Здраствуйте.
Проблема с переходом в защищенный режим и работе в нем...
Код бут.асм:------------------------------------------------------------------
[BITS 16]
[ORG 0x7c00]
cli
mov ax,0
mov ds,ax
mov es,ax<br...Вопрос № 76669: Уважаемые! Подскажите причину по которой не создаются *.com
ML *.asm
- создаются *.obj и *.exe
ML *.asm /AT
- только *.obj
...
Link: fatal error L1127:far segment references not allowed with /TINY
Пользу...Вопрос № 76680: здравствуйте. я совсем совсем ещё новичёк.месяц назад начал изучать ассемблер по книге олега калашникова и столкнулся с проблемой. мои действия : 1-печатаю текстовый файл листинга в текстовом редакторе(блокнот WinXP), 2-запускаю командную строку, 3-&...Вопрос № 76713: Подскажите ,пожалуйста ,какая ошибка в данной программе ,а то она не запукается,ругается
CSEG segment
org 100h
Begin:
mov ax,0B800h
mov es,ax
mov di,0
mov al,1
mov ah,31
mov cx,2000
Next_face: <b...Вопрос № 76724: Помогите пожалуйста исправить!!!!!!!!!!
1.Дан массив размерности n.Найти первый отрицательный элемент.
Вопрос:Сделать для двух отрицательных элиментов???????????
include <iostream>
using namespace std;
int main() {
...
Вопрос № 76.056
здраствуйте.
у меня такой вопрос. где можна найти исходник для Turbo Assembler, который показывает формат компа IBM PC - АТ или ХТ. слышал что есть книжка "Р. Джордейн.- Справочник программиста персональных компьютеров типа IBM PC, XT и AT" и вней вроде есть примеры текста такой программы. но я ее в инете в элекктронном виде нигде немогу отыскать. может кто-нибуть сможет поделтся отсканеной главой с книжки или своим вариантом текста такой программы.
заранее спасиба.
Отправлен: 16.02.2007, 19:05
Вопрос задал: CoderX (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, CoderX!
посмотрите тут
http://avt.cs.nstu.ru/pub/common/help/jourdane/jordane.arj
Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 5-ый класс)
Ответ отправлен: 16.02.2007, 19:34 Оценка за ответ: 5 Комментарий оценки: спасиба за линк. а то я эту книжку уже чуть было не купил в интернет-магазине. отличная книженция всё очень подробно расписано!
Вопрос № 76.088
Скажите где мне найти библиотеку import32.lib при компилирование Tasma32 если кто может скиньте на мой яшек спасибо devochka.russia@gmail.com простите что такой емайл???... Спасибо.!
Отправлен: 16.02.2007, 23:23
Вопрос задал: Supportx (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Supportx!
посмотрите на www.wasm.ru
раздел инструменты
TASM 5+ [Borland Corp. and !tE]
после распаковки в папке lib будет библиотека imp32i.lib,
это она и есть, заодно посылаю на мыло
Удачи!
Доброго времени суток ! :)подскажите как лучше сделать:прочитать файл с помощью функции 3Dh прерывания int 21h.какой буфер лучше выбрать и как лучше вывести его содержимое на экран?
Отправлен: 17.02.2007, 15:48
Вопрос задал: ATZATZ (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Евгений Иванов
Здравствуйте, ATZATZ!
Используй буфер не более 64 Кбайт. Считывай файл последовательно и выводи с помощью прямого доступа в видеопамять, что быстро работает.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 17.02.2007, 15:56 Оценка за ответ: 5 Комментарий оценки: Ага.так и сделал.только есть момент: я не понял что значит "Считывай файл последовательно
"
Вопрос № 76.338
Здравствуйте уважаемые эксперты.
Подскажите пожалуйста, почему FASM под винду не хочет компилировать мою прогу под дос. А именно он ругается на директиву segment. Когда её нет - компилиться. Может в fasm-е не нужно описывать сегменты?
Отправлен: 18.02.2007, 21:12
Вопрос задал: Kashey (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Евгений Иванов
Здравствуйте, Kashey!
FASM предназначен непосредственно для win32, как я знаю.
Используй директиву FORMAT MZ для создания 16-битного кода.
Также пиши директиву USE16.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 18.02.2007, 21:22
Отвечает: Волков Павел Юрьевич
Здравствуйте, Kashey!
Компилятор создает код для DOS,Windows,Unix-like систем.
По умолчанию создается 16-битный код, поэтому при создании COM,MZ можно use16 не писать.
Для создания *.com файлов никаких директив ненадо:
;========================
org 100h
mov ah,9
mov dx,welcome
int 21h
mov ah,10h
int 16h
int 20h
welcome db "Welcome to Greate DOS!$"
;========================
Для EXE, без сегментов:
;========================
format MZ
org 100h
mov ah,9
mov dx,welcome
int 21h
mov ah,10h
int 16h
int 20h
welcome db "Welcome to Greate DOS!$"
;========================
С сегментами:
;========================
format MZ
entry main:start
stack 100h
segment main
start:
mov ax,text
mov ds,ax
mov dx,hello
call extra:write_text
mov ax,10h
int 16h
mov ax,4C00h
int 21h
segment text
hello db 'Hello world!',24h
segment extra
write_text:
mov ah,9
int 21h
retf
;========================
--------- Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 10-ый класс)
Ответ отправлен: 19.02.2007, 09:09
Вопрос № 76.355
Здравствуйте уважаемые эксперты!
В главе 16-ть книги Олега Калашникова описываются способы защиты программ от отладки.
После ознакомления с первыми двумя примерами я действительно увидел, что после прохождения отладчиком защитной части кода и когда трассировка доходила до первой строки основного кода отладчик начинал сбоить. Всё бы хорошо, если бы не одно "но". Если в CV вместо нажатия F8/f10 и соответственно f1/f2 в AFDPRO установить курсор в поле основного кода и начать нажимать клавишу курсора, то можно свободно пролистать весь код. Конечно ты не увидишь как данные прыгают по регистрам, но листинг то всё равно виден.
А если взять дизассемблер, то там наверняка можно будет затереть этот защищаемый участок и ковырять программу как угодно. Тогда для чего нужна такая липовая защита?
Спасибо!
Отправлен: 18.02.2007, 23:56
Вопрос задал: Paltus (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, Paltus!
она не липовая, а не совершенная Ж:-) это учебный пример, который в реальных программах давно не используется. не судите строго учебник, а не пособие по хакерским защитам Ж:-)
тем более что защита описана от трассировки, а вы использовали брек поинты, а не трасировку.
ps
абсолютно защитить нельзя, но можно сильно загемороить.
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 19.02.2007, 03:26
Вопрос № 76.473
Здраствуйте!
Пишу лабораторную работу и встретил ошибку Need expression на вот таком блоке:
xor ax,ax
mov AH,3Fh
mov BX,0
mov CX,5
mov DX,offset buffer
int 21h
cmp AX,5h
JNE L1: ;вот здесь ошибка!!!
cld
lea SI,pwd
lea Di,buffer
что за ошибка и как лечить?
Отправлен: 19.02.2007, 18:31
Вопрос задал: chikanok (статус: 3-ий класс)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, chikanok!
Убери двоеточие в названии метки.
Двоеточие нужно ставить в самом определении метки в потоке программы, а не в переходе на неё.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 19.02.2007, 18:35
Отвечает: Зенченко Константин Николаевич
Здравствуйте, chikanok!
В операторах перехода метка должна быть без двоеточия
Удачи!
Ответ отправил: P@lach (статус: 1-ый класс)
Ответ отправлен: 20.02.2007, 11:11
Вопрос № 76.500
Доброго времени суток, уважаемые эксперты.
Я попробовал создать загрузочный сектор на дискете, всё нормально вроде туда записалось, компьютер с нее грузится, но винда не видит дискету и говорит что он не отформатирована, можно было бы узнать как сделать так, чтобы ее возможно было просматривать?
Код того, что записываю в загрузочный сектор привел в приложении. Разбирался по статьям в интернете.
Заранее благодарен
Приложение:
Отправлен: 19.02.2007, 21:33
Вопрос задал: Mefisto (статус: 1-ый класс)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Волков Павел Юрьевич
Здравствуйте, Mefisto!
Видимо дело в том, что Вы записали полученный бинарник простым копированием на дискету. Надо записывать "напрямую", например с помощью программы rawrite (http://offffh.narod.ru/rawrite2.zip).
Скомпилировал FASM'ом, ругнулся на строчку
_message: db 'Hello, world!', 0
исправил на:
_message:
db 'Hello, world!', 0
Затем, полученный бинарник указал в программе rawrite и при загрузке с нее увидел надпись - Hello, world!. Так что код работает.
--------- Век живи, век учись.
Ответ отправил: Волков Павел Юрьевич (статус: 10-ый класс)
Ответ отправлен: 20.02.2007, 10:02 Оценка за ответ: 4 Комментарий оценки: При загрузке с нее у меня также все нормально работает, DiskEditom посмотрел на первый сектор там находится точь в точь что и в бинарнике, но виндовс гворит что дискета не отформатирована. ЗА ссылку на программу спасибо В приложении кстати в одном месте ошибку нашел, там не 18h а просто 18 секторов на дорожку.
Отвечает: ASMодей
Здравствуйте, Mefisto!
Обрати внимание на то, как скомпилировался первый JMP. У меня FASM 1.67 скомпилировал его в два байта, не смотря на указание типа word. Вследствие этого все параметры boot-сектора сместились на 1 байт.
Ответ отправил: ASMодей (статус: Профессионал) Россия, Магнитогорск ---- Ответ отправлен: 21.02.2007, 08:23 Оценка за ответ: 4 Комментарий оценки: ВОТ, это я заметил, но так че то и не понял почему так произошло. в приницпе я нашел исходники рабочего загрузчика, вот в нем как раз так и получилось что 3 первых байта занял JMP. Спасибо за замечание
Вопрос № 76.593
Здраствуйте!
Помогите пожалуйста!
Вообшем нужно сравнить слово в программе(переменная) со словом введёным с клавиатуры! Ввожу слово сравнивается длина слова, всё нормальо, а после сами слова, и здесь неправильно тоесть они не одинаковы(для ПК).Части кода в приложении.
Подскажите как узнать длину слова при объявлении как переменной,тоесть сначала переменная слова,а потом длина слова.
Приложение:
Отправлен: 20.02.2007, 14:07
Вопрос задал: chikanok (статус: 3-ий класс)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, chikanok!
код 0Ah с клавиатуры не вводится, после слова сразу идет 0Dh.
переделайте этот участок в .СОМ формат и проверьте DUBUG.EXE
из поставки "окон"
Удачи!
pusha
.loop
lodsb
test al,al
jz .quit
mov ecx,[cursor]
mov [VIDEO_RAM+ecx*2],al
inc dword [cursor]
jmp short .loop
.quit:
popa
ret
cursor dd 0
msg_ok: db 'Hello from pmode!',0
VIDEO_RAM equ 0b8000h
----------------------------------------
Порядок сборки:
сначала НАСМом собираю в бинарник кернел
потом бут
эмулятор: VMware
проблема:
при начале эмуляции ВМваре выдает сообщение, что "...stack fault (hardware resert) ..." и система перезагружается, но между нажатием на ОК у сообщения и перезагрузкой на экране появляется тескт первых двух сообщений:
Secondary bootloader received control
Entering protected mode...
Вопрос: почему не подаются признаки жизни (не выводится текст) из кернела? Как/что/где исправить?
Отправлен: 20.02.2007, 20:12
Вопрос задал: Erz (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Erz!
;обратите внимание
in al,92h
;-)or al,2
;-)out 92h,al
Уважаемые! Подскажите причину по которой не создаются *.com
ML *.asm
- создаются *.obj и *.exe
ML *.asm /AT
- только *.obj
...
Link: fatal error L1127:far segment references not allowed with /TINY
Пользуюсь MASM611.
Отправлен: 20.02.2007, 23:12
Вопрос задал: SrNic (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: ramok
Здравствуйте, SrNic!
у вас в исходнике наверное описано несколько сегментов, а для .com нужно описать только один сегмент кода и все.
Ответ отправил: ramok (статус: Практикант)
Ответ отправлен: 21.02.2007, 00:53
Отвечает: Chip
Здравствуйте, SrNic! Папробуй кинуть link.exe из папки BINR в папку BIN
Ответ отправил: Chip (статус: 1-ый класс)
Ответ отправлен: 21.02.2007, 01:14 Оценка за ответ: 3 Комментарий оценки: Пробовал
Вопрос № 76.680
здравствуйте. я совсем совсем ещё новичёк.месяц назад начал изучать ассемблер по книге олега калашникова и столкнулся с проблемой. мои действия : 1-печатаю текстовый файл листинга в текстовом редакторе(блокнот WinXP), 2-запускаю командную строку, 3-"(мне нужно из asm. файла получить com. файл)" следую инструкциям в книге,в командной строке запускаю ML.EXE с /AT. пример :ML.EXE файл.asm /AT. (использую MASM 6.11). На что получаю ответ Assembling:файл.asm fatal error A1020 cannot find link.exe. тоже
выходит и DosNavigatore и в Fare. вобщем немогу создать com файл.
Отправлен: 21.02.2007, 00:50
Вопрос задал: Deeman (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Chip
Здравствуйте, Deeman!Папробуйте кинуть link.exe из папки BINR в папку BIN
Ответ отправил: Chip (статус: 1-ый класс)
Ответ отправлен: 21.02.2007, 01:19 Оценка за ответ: 5 Комментарий оценки: Chip спасибо за ответ. Но я уже пробовал так делать, перемещал link.exe. Ксажелению это непомогло.
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Deeman!
В MASM 6.11 программа ML.EXE - только оболочка
которая запускает
masm.exe <имя><опции транслятора>
а потом
link.exe <имя><опции коипилятора>
попробуй их запустить так
masm <имя>
link <имя> /t
Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 5-ый класс)
Ответ отправлен: 21.02.2007, 11:06 Оценка за ответ: 4 Комментарий оценки: спасибо за ответ Константин Николаевич. Сделал всё как вы посоветовали. Но теперь выходит другая ошибка.. cannot run ml.exe. Может ещё что посоветуете.
Вопрос № 76.713
Подскажите ,пожалуйста ,какая ошибка в данной программе ,а то она не запукается,ругается
CSEG segment
org 100h
Begin:
mov ax,0B800h
mov es,ax
mov di,0
mov al,1
mov ah,31
mov cx,2000
Отвечает: Евгений Иванов
Здравствуйте, Ивкина Светлана Николаевна!
Также советую добавить
mov ax,3
int 16
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор) Россия, Нижний Новгород Тел.: +78313145721 Организация: M2Media.ru Адрес: Нижний Новгород, ул.Малая Ямская WWW:Eugene Ivanov ICQ: 214889076 ---- Ответ отправлен: 21.02.2007, 12:01
Вопрос № 76.724
Помогите пожалуйста исправить!!!!!!!!!!
1.Дан массив размерности n.Найти первый отрицательный элемент.
Вопрос:Сделать для двух отрицательных элиментов???????????
include <iostream>
using namespace std;
int main() {
const int n = 10;
int ar[n] = {4, 0, 2, 4, 3, 3, -5, 3, 7, 5};
int r;
asm {
pusha
push es
push ds
pop es
lea edi, ar
lea esi, [edi + 4]
xor eax, eax
mov ecx, n
4: scasd
jg @5
loop @4
mov r, -1
jmp @6
5: sub edi, esi
shr edi, 2
mov r, edi
6: pop es
popa
}
(r < 0) ? cout<<"No negative elements" : cout<<ar[r];
return 0;
}
2.В строке заменить все символы '1' символом '0', а символы '0' символом '1'
Программа работает, символы меняет, но почему то дописывает еще '1' шестым символом, а шестой символ '5' и менять она его не должна???????
#include <iostream>
using namespace std;
int main() {
char s[] = "234105431591045 char buf[30];
asm {
pusha
push es
push ds
pop es
lea esi, s
lea edi, buf
1: lodsb
cmp al, '0'
jne @2
mov al, '1'
stosb
jmp @3
2: cmp al, '1'
jne @3
mov al, '0'
3: stosb
test al, al
jne @1
pop es
popa
}
cout<<buf;
return 0;
}
Приложение:
Отправлен: 21.02.2007, 11:07
Вопрос задал: Kostya kam (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Kostya kam!
1.ищем отрицательное число, а сканируем в поисках 0;
2.после
mov al, '1'
stosb;вот эту команду
переход
и снова
3:stosb
(нужно убрать одну команду stosb или переходить на одну команду дальше)
см. приложение.
Удачи!