Вывод чисел через одно - Assembler

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

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

Необходимо,чтобы при вводе символов,числа выводились через одно.Подскажите, пожалуйста, как это сделать?

Решение задачи: «Вывод чисел через одно»

textual
Листинг программы
  1. LOCALS
  2.  
  3. .model small
  4.  
  5. .stack 100h
  6.  
  7. .data
  8.         CrLf    db      0Dh, 0Ah, '$'
  9.         Count   dw      ?
  10. .code
  11.  
  12. main    proc
  13.         mov     ax,     @data
  14.         mov     ds,     ax
  15.  
  16.  
  17.         mov     Count,  0
  18. @@Loop:
  19.         mov     ah,     08h
  20.         int     21h
  21.         cmp     al,     0       ;функциональная клавиша?
  22.         jne     @@TestESC
  23.         int     21h             ;да - считать оставшийся код
  24.         jmp     @@Loop
  25. @@TestESC:
  26.         cmp     al,     1Bh
  27.         je      @@Break
  28. @@TestDigit:
  29.         cmp     al,     '0'
  30.         jb      @@Loop
  31.         cmp     al,     '9'
  32.         ja      @@Loop
  33.  
  34.         ;это цифра. Теперь проверяем, выводить ли её
  35.         xor     Count,  1
  36.         test    Count,  1
  37.         jnz     @@Loop
  38.         mov     ah,     02h
  39.         mov     dl,     al
  40.         int     21h
  41.  
  42.         jmp     @@Loop
  43. @@Break:
  44.  
  45.         mov     ax,     4C00h
  46.         int     21h
  47. main    endp
  48.  
  49. end     main

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

  1. Создаются локальные переменные
    • LOCALS
  2. Определение модели памяти и резервирование стека
    • .model small
    • .stack 100h
  3. Объявление переменной CrLf, которая содержит символы возврата каретки и перевода строки
    • CrLf db 0Dh, 0Ah, '$'
  4. Объявление переменной Count, которая представляет собой беззнаковое слово (двухбайтовое целое число без знака)
    • Count dw ?
  5. Начало кода программы
    • main proc
  6. Инициализация сегмента данных
    • mov ax, @data
    • mov ds, ax
  7. Начало метки цикла @@Loop
  8. Ввод символа с клавиатуры
    • mov ah, 08h
    • int 21h
  9. Проверка на функциональные клавиши (например, Esc)
    • cmp al, 0
    • jne @@TestESC
    • int 21h
    • jmp @@Loop
  10. Проверка на клавишу Esc (код 1Bh)
    • cmp al, 1Bh
    • je @@Break
  11. Проверка на ввод цифр
    • cmp al, '0'
    • jb @@Loop
    • cmp al, '9'
    • ja @@Loop
  12. Если введена цифра, то проверка на необходимость вывода
    • xor Count, 1
    • test Count, 1
    • jnz @@Loop
    • Вывод цифры
      • mov ah, 02h
      • mov dl, al
      • int 21h
    • jmp @@Loop
  13. Окончание программы
    • @@Break
      • mov ax, 4C00h
      • int 21h
  14. Конец процедуры main
    • main endp
  15. Окончание программы
    • end main

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


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

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

9   голосов , оценка 3.444 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут