Регистрация
Среда программирования: Assembler-TASM(DOS)
Название работы: Машинно-зависимые языки
Вид работы: Контрольная работа
Описание: Примерные темы семестровых(контрольных) работ по дисциплине «Машинно-зависимые языки»
Общей частью для всех семестровых работ является:
Разработать программу на языке Ассемблера Intel x86 для ОС MS-DOS (допустимо для ОС UNIX). Модель памяти – не регламентируется.
Программа при запуске выводит приветствие с ФИО исполнителя, Вариант задания определяется по первой букве фамилии. Для семейных пар и близких родственников - по первой букве имени.
Задания выполняются с использованием готовых программных блоков, согласно рекомендациям в {}.
Задания:
А. Зеркально отразить введенную строку {через стек: посимвольно push, затем посимвольно pop}. (Пример -> ремирП)
Б. Удалить все пробелы в строке{Ввод строки через mov ah,10; lea dx, ***; int 21h}. (Пример: Мы все здесь.-> Мывсездесь. )
В. Добавить между символами пробелы{считываем символ lodsb; сохраняем символ и пробел stosw}. (Пример -> П р и м е р )
Г. В приветствии написать текст загадки. Введенное слово считать ответом {Более 3 символов} пользователя. Определить – это правильный или неправильный ответ {сравнить командой cmpsb}.
Д. Ввести строку, ввести число N {пример для N}. Вывести результат : символ из позиции N в строке{командой xlat}.
Е(Ё). Ввести число в двоичной форме J {пример для J}. Вывести это число в 16-ричной форме.
Ж. Ввести строку, ввести символ {mov ah,1; int 21h}. Подсчитать и вывести, сколько раз в слове встретилась буква {ответ должен быть от 0 до 9. ASCII коррекция командой: or al, '0'}.
З. Ввести строку, ввести символ {mov ah,1; int 21h}. Найти и вывести номер позиции первого нахождения символа в строке {ответ должен быть от 0 до 9. ASCII коррекция командой: or al, '0'}.
И(Й). Ввести символ {mov ah,1; int 21h}. Вывести на экран его 16-ричный ASCII код (пример, '0' -> 30H).
К. Ввести число в 10-ричном беззнаковом виде {от 0 до 255, при каждой цифре{пример для N} умножить на 10 итог и сложить итог с введенной цифрой}. Вывести в двоичной форме{используя команды сдвига}.
Л. Ввести строку. Вывести на экран попарно поменяв символы {xchg}(пример, находка->анохкда).
М. Ввести число в 16-ричном виде {пример для H}. Вывести соответствующий по таблице ASCII символ.
Н. Ввести 16-битное число G в 16-ричном виде {пример для H}. Вывести на экран 16-ричный код символа из памяти по адресу [0000: число G]
О. Ввести строку. Найти в строке и вывести на экран символ с наименьшим ASCII кодом.
П. Ввести строку. Посчитать и вывести на экран количество символов, не считая пробелов{ответ должен быть от 0 до 9. ASCII коррекция командой: or al, '0'}.
Р. По-символьно вводить цифры {пример для N}. Суммировать и прекратить ввод, когда сумма превысит 47.
С. Ввести два числа в двоичной форме J {пример для J}. Вывести на экран значение побитной прямой импликации в двоичной или 16-ричной форме.
Т. Ввести строку , ввести число N {пример для N}. Вывести введенную строку на экран N раз.
У. Ввести две строки. Проверить, одинаковые ли они {используя команду cmpsb}.
Ф. Ввести два числа, первое в двоичной форме J {пример для J}, второе в 16-ричном виде {пример для H}. Сравнить цифры (больше, меньше, равно).
Х. Ввести число в двоичной форме J {пример для J}. Считать его знаковым. Сравнить его по модулю с числом 78 (больше, меньше, равно)
Ц. Ввести строку. Вывести его quoted printable значение для всех символов. (Пример, абв9 -> '=61=62=63=39'){}.
Ч. Вывести на экране значение сегментного адреса программы 16-ричном виде.
Ш. Ввести строку, ввести число N {пример для N}. Вывести строку начиная с позиции N.
Щ. Ввести строку, ввести число N {пример для N}. Вывести строку кроме последних N символов.
Э(Ы). Сравнить значения регистров cs и sp {командной cmp}. Вывести с расшифровкой значения всех флагов.
Ю. Вывести на экране значение регистра ss в 2-ичном виде{используя команды сдвига}.
Я. Ввести число в двоичной форме J {пример для J}. Вывести соответствующий по таблице ASCII символ.
{пример для N}
mov ah,1
int 21h
and al,0fh
{пример для J}
mov cx,8 ; подготовка переменных
mov dx,0 ; dx - результат
m1:
push dx ; "спрячем" на время в стеке
mov ah,1 ; введем с клавиатуры 1 символ
int 21h
pop dx ; вернем из стека
shl dx,1 ; сдвинем на 1 бит
cmp al,'1'
jnz m2
or dx,1 ; если был введен символ '1' - установим младший бит
m2:
loop m1 ; конец цикла
{пример для H}
mov ah,1 ; введем 1 символ
int 21h
cmp al, 'a' ; a - маленькая английская
jb m1
cmp al, 'f'
ja input_error
sub al,'a' + 0ah
jmp input_rezult
; аналогично для заглавной буквы
m1:
cmp al, 'A' ; A - большая английская
jb m2
cmp al, 'F'
ja input_error
sub al,'A' + 0ah
jmp input_rezult
m2:
; аналогично для цифр
cmp al, '0' ; 0 - ноль
jb input_rezult
cmp al, '9'
ja input_error
sub al,'0' + 0
jmp input_rezult
input_error:
mov al,0
input_rezult:
Год: 2018
Данный заказ (контрольная работа) выполнялся нашим сайтом в 2018-м году, в рамках этого заказа была разработана программа в среде программирования Assembler-TASM(DOS). Если у Вас похожее задание на программу, которую нужно написать на Assembler-TASM(DOS), либо на другом языке программирования, пожалуйста заполните форму, приведённую ниже, после чего Ваше задание в первую очередь рассмотрит наш программист, выполнявший в 2018-м году этот заказ, если он откажется, то Ваше задание оценят другие наши программисты в течение 48-и часов, если оценка нужна срочно, просим Вас оставить пометку об этом - напишите в тексте задания фразу "СРОЧНЫЙ ЗАКАЗ".
Тел.: ![]() Viber: ![]() Telegram: ![]() ВКонтакте: ![]() ![]() E-mail: ![]() Skype: ![]() |