Разработка программы ввода-вывода и обработки последовательности кодов - 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

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Орган 100h - устанавливает сегментный регистр для обращения к памяти.
  2. Push 0F000h - сохраняет значение в стеке для последующего восстановления сегментного регистра.
  3. Pop ds - восстанавливает сегментный регистр для обращения к памяти.
  4. Mov si, 0FFF5h - устанавливает значение индексного регистра для обращения к памяти.
  5. Lodsb - выполняет чтение байта из памяти и сохраняет его в регистре AL.
  6. Or al, al - выполняет логическое ИЛИ между значением в регистре AL и самим регистром AL.
  7. Jz @F - если значение в регистре AL равно нулю, то происходит переход к метке @F.
  8. Int 29h - выполняет прерывание, которое генерирует звуковой сигнал.
  9. Loop @@ - происходит переход к метке @@.
  10. Ret - выполняет возврат управления в вызывающую программу.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

13   голосов , оценка 4.231 из 5
Похожие ответы