Задача "Опасная ситуация" - Assembler

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

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

Необходимо создать программу-модель анализа пожарного датчика в помещении, которая выводит сообщение «Опасная ситуация», если t >= 45.Прошу помощи, так как сам только начал разбираться в языке.Спасибо!
.model FLAT
.data
stack 256
org 100H
 
n db ?
s db 45
stt db 'vvedite temperaturu$'
sss db 'opasnay situacia$'
.code
start :
mov ax,@data
mov ds,ax
mov dx,offset stt
int 21h
;vvod n
ah,01h
int 21h
sub al,30h
mov ah,0
mov bx,10
mov cx,ax
loop:ah,01h
int 21h
cmp al,0dh
je end
sub al,30h
cbw
xchg ax,cx
mul bx
add cx,ax
jmp loop
end:mov n,cx
 
cmp n,s
jge 
mov dx,offset sss
int 21h
end start

Решение задачи: «Задача "Опасная ситуация"»

textual
Листинг программы
.model small
.386
 
.data
s   dw 45
stt db 0Dh,0Ah,'vvedite temperaturu = $'
sss db 0Dh,0Ah,'opasnaja situacia!!!$'
 
.stack 256
 
.code 
start:
    mov ax,@data
    mov ds,ax   
    
    mov ah,09h
    mov dx,offset stt
    int 21h
    
    ;ввод n
    mov ah,01h
    int 21h
    
    sub al,30h
    mov ah,0
    
    mov bx,10
    mov cx,ax
    
    digit:
    mov ah,01h
    int 21h
    
    cmp al,0Dh
    je fin
    
    sub al,30h
    mov ah,0
    
    xchg ax,cx
    mul bx
    
    add cx,ax
    loop digit
    
    fin:    
    cmp cx,s
    jl exit
    
    mov ah,09h
    mov dx,offset sss
    int 21h
    
    exit:   
    mov ah,4Ch
    int 21h
end start

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

  1. Установка модели памяти на small и использование 386-го процессора.
  2. Объявление данных:
    • s - переменная типа dw (слово), содержащая 45.
    • stt - строковая переменная, содержащая vvedite temperaturu = $.
    • sss - строковая переменная, содержащая opasnaja situacia!!!$.
  3. Установка стека на 256 байт.
  4. Начало кода:
    • Перемещение сегмента данных в регистр ax.
    • Перемещение сегмента данных в регистр ds.
  5. Вывод сообщения vvedite temperaturu = $.
  6. Ввод n.
  7. Обработка ввода n:
    • Проверка, является ли введенная цифра последним символом.
    • Если да, то переход к следующей итерации цикла.
    • Если нет, то обработка цифры (вычитание 30h для символов от 0 до 9).
  8. Установка регистра bx равным 10.
  9. Установка регистра cx равным значению регистра ax.
  10. Цикл обработки введенных цифр:
    • Ввод следующей цифры.
    • Если введена цифра 10, то переход к следующей итерации цикла.
    • Если введена цифра от 0 до 9, то обработка этой цифры (вычитание 30h).
    • Обмен значениями регистров ax и cx.
    • Умножение значения регистра bx на значение регистра cx.
    • Прибавление значения регистра cx к значению регистра ax.
  11. Проверка значения регистра cx на равенство значению переменной s.
  12. Если значение регистра cx меньше значения переменной s, то переход к следующей итерации цикла.
  13. Вывод сообщения opasnaja situacia!!!$.
  14. Конец работы программы:
    • Вывод сообщения об успешном завершении работы.
  15. Возврат в DOS.

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


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

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

14   голосов , оценка 4.214 из 5