Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

RusFAQ.ru: программирование на языке Assembler


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler

Выпуск № 372
от 15.02.2006, 00:21

Администратор:Калашников О.А.
В рассылке:Подписчиков: 260, Экспертов: 24
В номере:Вопросов: 3, Ответов: 3


Вопрос № 35080: Привет! 1. Пожалуйста, приведите пример программы вывода на экран результата сложения двух чисел: mov al,10 add al,15 , на примере программы (или другой): CSEG segment assume CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG org 100...
Вопрос № 35100: Добрые люди! Помогите разобраться в этом коде. Некоторую часть я осилил сам. Но общий принцип понять не могу (bl=1A): 00401310 |> 803E 00 |CMP BYTE PTR DS:[ESI],0 00401313 |. 74 15 |JE SHORT crackme#.0040132A 00401315 |. 8A06 |MOV AL...
Вопрос № 35115: Добрый день. Вот пишу ос (для интереса). Перешел в защещонный режим. Gdt idt таблицы есть (idt работает точно проверял через свое прерывние int 30). ;; Установим базовый вектор контроллера прерываний в 0x20 mov al,00010001b out 0x...

Вопрос № 35.080
Привет!
1. Пожалуйста, приведите пример программы вывода на экран результата сложения двух чисел:
mov al,10
add al,15 , на примере программы (или другой):

CSEG segment
assume CS:CSEG, DS:CSEG, ES:CSEG, SS:CSEG
org 100h
_beg:
mov ah,9

mov al,169
mov bl,31

mov bh,0

mov cx,1
int 10h
int 20h
ret

CSEG ends
end _beg

2. Как вывести на экран:
а) 2 (и более) разных символов, без использования строки.
б) численный символ и строку.

3. Как происходит работа с массивами
У нас есть массив из 10 элементов, нам нужно присвоить им значения.
Отправлен: 09.02.2006, 13:25
Вопрос задал: Retcom (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Seamanmur
Здравствуйте, Retcom!
1. Число перед выводом надо превести в строку(в литерное представление). Пример вывода AX в десятичном виде в приложении(написано не мной, но должно работать).
2.
а) Ну, если коды символов находятся в регистрах, можно их просто вывети на печать. А, вообще, вопрос не очень понятен. А как они тогда организованы эти несколько символов, если не строкой?
б) Объединить две строки - символное представление числа и строку, или просто последовательно вывести их на печать.
3. Пример: заносишь в ES:DI адрес начала массива. Последовательно
mov ax, First
stosw
mov ax, Second
stosw
...

Приложение:

Ответ отправил: Seamanmur (статус: 3-ий класс)
Отправлен: 09.02.2006, 15:10
Оценка за ответ: 3
Комментарий оценки:
Я прошу прошения за возможную прямоту комментария, но тем неменее, если он (комментарий) есть, то в него надо писать причину побудившую меня поставить именно такую оценку. Поэтому:
Вопрос 1:
Программа не полная;
А вы немогли бы еще более усложнить такую минимальную задачу???
Вопрос 2:
Меня интересуют не Ваши размышления по поводу вопроса и затронутой темы, а практический ответ на мой вопрос (размышлять я должен сам) - исходник.

P.S. На вопрос нужно ответить так, чтобы он больше не стоял. На вопрос нужно ответить, а не разбить его на множество мелких вопросов.

Еще раз извините за возможную прямоту, но вам нужно непредвзятое мнение.

+1 бал за то, что вообще ответили.


Вопрос № 35.100
Добрые люди! Помогите разобраться в этом коде. Некоторую часть я осилил сам. Но общий принцип понять не могу (bl=1A):
00401310 |> 803E 00 |CMP BYTE PTR DS:[ESI],0
00401313 |. 74 15 |JE SHORT crackme#.0040132A
00401315 |. 8A06 |MOV AL,BYTE PTR DS:[ESI]
00401317 |. 02C1 |ADD AL,CL
00401319 |. 32C1 |XOR AL,CL
0040131B |. F6F3 |DIV BL
0040131D |. 66:C1E8 08 |SHR AX,8
00401321 |. 04 41 |ADD AL,41
00401323 |. 8807 |MOV BYTE PTR DS:[EDI],AL
00401325 |. 47 |INC EDI
00401326 |. 46 |INC ESI
00401327 |. 41 |INC ECX
00401328 |.^EB E6 |JMP SHORT crackme#.00401310
Огромное спасибо!
Отправлен: 09.02.2006, 18:53
Вопрос задал: Compare (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: Евгений Иванов
Здравствуйте, Compare!
Берёт данные и шифрует.
простенький алгоритм.
---------
Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 09.02.2006, 19:04


Вопрос № 35.115
Добрый день. Вот пишу ос (для интереса). Перешел в защещонный режим. Gdt idt таблицы есть (idt работает точно проверял через свое прерывние int 30).

;; Установим базовый вектор контроллера прерываний в 0x20
mov al,00010001b
out 0x20,al
mov al,0x20
out 0x21,al
mov al,00000100b
out 0x21,al
mov al,00000001b
out 0x21,al
;; Установим ведомый 0x28
mov al, 00010001b ; ICW1
out 0A0h, al
mov al, 0x28 ; ICW2, ведомый
out 0A1h, al
mov al, 2 ; ICW3, ведомый
out 0A1h, al
mov al, 00000001b ; ICW4
out 0A1h, al

Вот обработчики:
void keyb()
{
asm("pusha");
asm("inb $0x60,%al");
puts("Key ");

asm("inb $0x61,%al");
asm("movb %al,%ah");
asm("orb $0x80,%al");
asm("outb %al,$0x61");
asm("xchgb %al,%ah");
asm("outb %al,$0x61");

asm("mov $0x20,%al");
asm("out %al,$0x20");

asm("popa");
}
void time()
{
asm("pusha");
puts("time ");
asm("mov $0x20,%al");
asm("out %al,$0x20");

asm("popa");
}

Сразу выводит один раз time и все. На клавиши не реагирует. В чем проблемма? Th for answer
Отправлен: 09.02.2006, 23:15
Вопрос задал: OlegMA (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: skif quest
Здравствуйте, OlegMA!
Посмотри, в дизасм коде, у тебя в конце кода time стоит ret или iret? а то мне кажется там ret стоит, поэтому он и не возвращается из первого же прерывания.

И вообще, я в таких случаюх проверяю (ставлю эдакий брейкпоинт, и смотрю доходит до него или нет выполнение).

на fasm:

lgdt [gdtr1]

gdtr1:
dw 1*8-1
dd gdtr1+100
но это так, на заметку, этот код ребутит машину.
Ответ отправил: skif quest (статус: 1-ый класс)
Отправлен: 10.02.2006, 06:14


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.14 (бета) от 09.02.2006
Яндекс Rambler's Top100

В избранное