Разработка программы ввода-вывода и обработки последовательности кодов - Assembler
Формулировка задачи:
Помогите мне пожалуйста решить мне задачу.
ЗАДАНИЕ: Написать программу на Ассемблере, выполняющую ввод последовательности кодов символов с клавиатуры, обработку кодов в соответствии с заданием и вывод на экран результирующей последовательности.
Программа должна включать в себя:
• ввод последовательности кодов символов с клавиатуры;
• обработку кодов в соответствии с заданием;
• вывод на экран результирующей последовательности
• вывод на экран даты создания BIOS (Aф=0FFFF5h).
Программа должна быть реализована в 2-х вариантах:
а) односегментная (.com); б) многосегментная (.exe).
Исходные данные:
Переставляются байты в словах a(i) c.
Может быть пригодится:
Текст программы в отладчике:
cs:0100 BE0002 mov ax, 0200 ;помещаем в ax адрес начала рабочего массива
cs:0103 BF0802 mov ax, [si] ;помещаем в ax адрес начала приемного массива
cs:0105 3D1320 cmp [si], 2013 ;сравниваем si с 2013
cs:0108 7207 jc 0111 ;перейти если c ≥ a(i) (2013 ≥ [si])
cs:010A 86E0 xchg al, ah ;обмен между al и ah (обмен между парами байта)
cs:010C 8905 mov [di], ax ;помещаем в di адрес следующего массива
cs:010E 83C702 add di, 0002 ;сложение di с 0002
cs:0111 83C602 add si, 0002 ;сложение si с 0002
cs:0114 E2ED loop 0103 ;цикл с началом в 0103
Дамп памяти:
ds:0200 12 1F 5E DF 35 3D DB AD
ds:0208 BC 89 00 00 00 00 00 00
ds:0210 08 CA 00 00 00 00 00 00
Решение задачи: «Разработка программы ввода-вывода и обработки последовательности кодов»
textual
Листинг программы
org 100h push 0F000h pop ds mov si, 0FFF5h @@: lodsb or al, al jz @F int 29h loop @B @@: ret
Объяснение кода листинга программы
В этом коде выполняется следующая последовательность действий:
- Орган 100h - устанавливает сегментный регистр для обращения к памяти.
- Push 0F000h - сохраняет значение в стеке для последующего восстановления сегментного регистра.
- Pop ds - восстанавливает сегментный регистр для обращения к памяти.
- Mov si, 0FFF5h - устанавливает значение индексного регистра для обращения к памяти.
- Lodsb - выполняет чтение байта из памяти и сохраняет его в регистре AL.
- Or al, al - выполняет логическое ИЛИ между значением в регистре AL и самим регистром AL.
- Jz @F - если значение в регистре AL равно нулю, то происходит переход к метке @F.
- Int 29h - выполняет прерывание, которое генерирует звуковой сигнал.
- Loop @@ - происходит переход к метке @@.
- Ret - выполняет возврат управления в вызывающую программу.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д