По введенному номеру месяца вывести время года - Assembler (245954)

Узнай цену своей работы

Формулировка задачи:

data segment    
mes1 db 10, 13, 'January$'
mes1_e db 10, 13, 'Neverno$'     
data ends                    
code segment     
start:   
    assume cs:code, ds: data         
    mov ax, data     
    mov ds, ax   
                 
    mov ah, 09h ;вводим первый символ и запоминаем его в bl
    int 21h  
    mov bl, ah           
 
    mov ah, 09h  
    lea dx, mes1_e  ;пусть символы неравны
    cmp bl, al  ;сравниваем их
    jne m_ne    ;если они неравны, переходим на вывод сообщения
    lea dx, mes1    ;иначе загружаем адрес другой строки
    m_ne:   int 21h

    mov ax, 4c00h    
    int 21h  
code ends    
end start
Как мне сделать, чтобы вводилась 1 и выводился месяц январь на примере моего кода.

Решение задачи: «По введенному номеру месяца вывести время года»

textual
Листинг программы
.data
Season label
    dw offset asWinter
    dw offset asSpring
    dw offset asSummer
    dw offset asAutumn
 
asWinter db 'Winter', '$'
asSpring db 'Spring', '$'
asSummer db 'Summer', '$'
asAutumn db 'Autumn', '$'
 
.code
.................
    mov al, [S]
    mov ah, 0
    mov si, ax
    shl si, 1
    mov dx, Season[si]
    mov ah, 09h
    int 21h
.................

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

Список с пояснениями: .data

  1. Season label
  2. dw offset asWinter
  3. dw offset asSpring
  4. dw offset asSummer
  5. dw offset asAutumn
  6. asWinter db 'Winter', '$'
  7. asSpring db 'Spring', '$'
  8. asSummer db 'Summer', '$'
  9. asAutumn db 'Autumn', '$' .code
  10. .................
  11. mov al, [S]
  12. mov ah, 0
  13. mov si, ax
  14. shl si, 1
  15. mov dx, Season[si]
  16. mov ah, 09h
  17. int 21h
  18. ................. В данном коде используется язык Assembler. Список переменных и их назначений:
  19. al - в этом случае используется для хранения введенного номера месяца.
  20. ah - используется как дополнительный регистр.
  21. si - используется как индекс для обращения к строкам в сегменте данных.
  22. dx - используется для хранения адреса строки с временем года.
  23. S - это сегментная переменная, которая содержит введенный номер месяца. Метод работы программы:
  24. Введенный номер месяца сохраняется в регистре al.
  25. Регистр ah инициализируется нулем.
  26. Сегмент регистра si устанавливается равным сегменту регистра al.
  27. Индекс в регистре si устанавливается равным значению регистра al, умноженному на 10 (сдвиг вправо на 11 позиций).
  28. В dx записывается адрес строки с временем года, которое соответствует введенному номеру месяца.
  29. В регистре ah устанавливается значение 09h, что является кодом функции вывода строки на экран.
  30. Выполняется интеркаляция int 21h, которая выводит на экран строку, адрес которой содержится в регистре dx.

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

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