Вопрос № 73626: мне надо написать программу на языке ассемблер, которая бы в введенной строке заменяла все символы 'r' введенной подстрокой,строка и подстрока вводятся с клавиатуры.ПОМОГИТЕ СТУДЕНТУ Начало программы есть,но надо видеть результат,его надо видеть на э...Вопрос № 73627: Здравствуйте!!
Помогите пожалуйста решить следующие задачи.
Все задачи имеют отношение к следующим данным:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
1) Закодировать команды для сложения:
А) слов...Вопрос № 73635: Здравствуйте!
Задача: резидентная прграмма под дос, которая отслеживает нажатие какой-либо комбинации клавиш(какой не имеет значения) и псоле этого изменяет все введенные символы на символы противоположного языка(Н-р набрали кгы нажимаем комбина...
Вопрос № 73.626
мне надо написать программу на языке ассемблер, которая бы в введенной строке заменяла все символы 'r' введенной подстрокой,строка и подстрока вводятся с клавиатуры.ПОМОГИТЕ СТУДЕНТУ Начало программы есть,но надо видеть результат,его надо видеть на экране.Я не пойму где надо пиать MOV Al,'r' или вобще здесь ничего не правильно.Понимаю что программа небольшая
Приложение:
Отправлен: 01.02.2007, 13:20
Вопрос задал: ProY (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Олег Владимирович
Здравствуйте, ProY!
MODEL SMALL и полное определение сегментов... Брр. :) Либо то, либо другое.
В приложении работающая прога.
Удачи!
Приложение:
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: Студент)
Ответ отправлен: 01.02.2007, 14:36 Оценка за ответ: 5 Комментарий оценки: Спасибо!!!!!! Очень быстро и вроде работает, я ведь student
Отвечает: Зенченко Константин Николаевич
Здравствуйте, ProY!
см. приложение
можно еще стек дописать прижелании
Удачи!
Приложение:
Ответ отправил: Зенченко Константин Николаевич (статус: 2-ой класс)
Ответ отправлен: 01.02.2007, 15:48 Оценка за ответ: 3 Комментарий оценки: Спасибо!! Но по-моему прога маленько не так работает,надо поковыряться и доделать
Вопрос № 73.627
Здравствуйте!!
Помогите пожалуйста решить следующие задачи.
Все задачи имеют отношение к следующим данным:
DATAX DW 0148H
DW 2316H
DATAY DW 0237H
DW 4052H
1) Закодировать команды для сложения:
А) слова DATAX со словом DATAY
Б) двойного слова начинающегося по адресу DATAX с двойным словом в DATAY
2) Объясните действие следующих команд:
STC
MOV BX,DATAX
ADC BX,DATAY
3) Закодируйте команды для умножения:
А) слова DATAX со словом DATAY
Б) двойного слова начинающегося по адресу DATAX на слово DATAY
4) Закодируйте команды для деления:
А) слова DATAX на 23
Б) двойного слова начинающегося по адресу DATAX на слово DATAY
Отвечает: Олег Владимирович
Здравствуйте, Алексей Береев!
(1a) MOV AX, DATAX ;Помещаем слагаемое в регистр
ADD AX, DAYAY ;Прибавляем к нему второе слагаемое
Результат в AX
(1б) Так как DATAX и DATAY объявлены с помощью DW, в предыдущем примере директивы определения размерности не требовались. А вот в этом:
MOV EAX, DWORD PTR DATAX ;Копируем 4 байта, начиная с DATAX, в 32битный регистр
ADD EAX, DWORD PTR DATAY ;Прибавляем двойное слово по адресу DATAY
Результат в EAX
Можно по-другому, не используя 32битные регистры:
MOV AX, DATAX ;Младшее слово -> AX
MOV DX,WORD PTR DATAX+2 ;Старшее слово -> DX
ADD AX, DATAY ;Складываем младшие слова
ADC DX, WORD PTR DATAY+2 ;Складываем старшие слова с учётом переноса из младшей части
Результат в регистровой паре DX:AX (старшее слово в DX)
(2) STC ; Устанавливает флаг переноса (CF) в 1
MOV BX,DATAX ;Копирует слово DATAX в BX
ADC BX,DATAY ;Помещает в BX следующее: BX+DATAX+CF. Так что отличие от 1a в том, что результат на 1 больше.
(3a) MOV AX,DATAX
IMUL AX,DATAY ;Команда знакового умножения AX на слово DATAY
Результат в AX
Другой вариант:
MOV AX, DATAX
MUL DATAY ;Умножает AX на операнд, помещая результат в пару DX:AX. Умножение беззнаковое (для знакового используйте IMUL)
(3б) Без комментариев
MOV EAX,DWORD PTR DATAX
IMUL EAX, DWORD PTR DATAY
или
MOV EAX,DWORD PTR DATAX
MUL DWORD PTR DATAY ;Результат в EDX:EAX
(4a) MOV AX,DATAX;Делимое
MOV DX,0;Его старшая часть
MOV BX,23
DIV BX;Делит беззнаковое DX:AX на операнд. Частное в AX, остаток в DX
(4б) Без комментариев
MOV EAX,DWORD PTR DATAX
MOV EDX,0
DIV DWORD PTR DATAY
Примеры не проверялись :)
Удачи!
--------- Факультет ПМ-ПУ - лучший в СПбГУ!
Ответ отправил: Олег Владимирович (статус: Студент)
Ответ отправлен: 01.02.2007, 13:49
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Алексей Береев!
вопросы 1,3,4 в приложении
2)
STC;устанавливаем флаг переноса CF=1
MOV BX,DATAX;загружаем в BX значение 0148H
ADC BX,DATAY;складываем BX и значение 0237H, и еще 1 из флага CF, и записываем все в BX
;в результате BX равен 0380H
Здравствуйте!
Задача: резидентная прграмма под дос, которая отслеживает нажатие какой-либо комбинации клавиш(какой не имеет значения) и псоле этого изменяет все введенные символы на символы противоположного языка(Н-р набрали кгы нажимаем комбинацию клавиш и получаем rus).
Если у кого-нибудь есть подобные программы, пожалуйста выложите!
Отправлен: 01.02.2007, 14:42
Вопрос задал: Xabar (статус: Посетитель)
Всего ответов: 1 Мини-форум вопроса >>> (сообщений: 1)
Отвечает: Зенченко Константин Николаевич
Здравствуйте, Xabar!
Фунцией 35h узнаем адрес старого обработчика 21h прерывания.
mov ax,3521h
int 21h
ES:BX-сегмент:относительный адрес обработчика прирывания
Функцией 25h ставим свой обработчик прерывания 21h
mov ax,2521h
push cs
pop ds
mov dx,offset new21;относительный адрес нового обработчика
int 21h
после этого все 21h прерывания будут поступать на установленный обработчик
в своем обработчике проверяеш AH=0Ah
Если не равно передаем на старый обработчик с помощью JMP FAR XXXX.
Если равно работаем с помощью портов клавиатуры 60h - 6Fh и со скан-кодами , имитируя функцию буферизированного ввода с клавиатуры, использование портов позволяет определять моменты нажатия и отпускания клавиш включая SHIFT, CTRL, ALT.
Можно использовать старый обработчик прерывания для вывода на экран, вызывая его с помощью CALL FAR ХХХХ и учитывая, что он возвращается по IRET.
Удачи!
Ответ отправил: Зенченко Константин Николаевич (статус: 2-ой класс)
Ответ отправлен: 01.02.2007, 20:45 Оценка за ответ: 4