Зделайте пожалуста уравнение на завтра очень надо - Assembler

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

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

a/b+1 a>b -2 a=b (a-b)/a a<b

Решение задачи: «Зделайте пожалуста уравнение на завтра очень надо»

textual
Листинг программы
Datas segment
a dw 1
b dw 10
c1 dw 1
c2 dw -25
c3 dw 5
c4 dw -1
ostacha dw ?
x dw ?
z dw ?
mesg db "Delenie na nol ! $";
mesg1 db "-2  $";
 
Datas ends
 
Codes segment
Assume cs:Codes, ds : Datas
 
First:
MOV ax, Datas
mov ds,ax
mov ax,a
cmp ax,b
jg @if1
jl @if3
je @if2
         @if1:
         xor ax, ax
         mov ax,b
         or ax,ax
         jz @null
         mov ax,a
         cwd
         idiv b
         adc ax,c1
         jmp @viv
 
         @if3:
         xor ax, ax
         mov ax,a
         or ax,ax
         jz @null
         mov ax,a         
         sub ax,b
         cwd
         idiv a
         jmp @viv
 
@if2:
         xor ax, ax
         mov    AH, 09h
         mov    DX, offset mesg1
         int    21h
         jmp @v
 
   @null:
   mov  AH, 09h
    mov DX, offset mesg
    int     21h
    jmp @v
 
;vivod
@viv:
 
mov x,ax
mov ostacha,dx
jmp outtext
 
outtext: mov ax,x
         push ax
cmp ax,0
jns @plus
mov ah,02h
mov dl,'-'
int 21h
pop ax
neg ax
@plus:
xor cx,cx
mov bx,10
@dvsn:xor dx,dx
      div bx
      push dx
      inc cx
      test ax,ax
      jnz short @dvsn
      mov ah,02h
      @vivod:pop dx
             add dl,30h
             int 21h
             loop @vivod
      mov ah,02h
      mov dl,'.'
      int 21h
 
mov ax,ostacha
push ax
xor cx,cx
mov bx,10
@dvsn_1:xor dx,dx
        div bx
        push dx
        inc cx
        test ax,ax
        jnz short @dvsn_1
        mov ah,02h
        @vivod_1:pop dx
                add dl,30h
                int 21h
                loop @vivod_1
 
;exit
@v:
mov ah,4ch
mov Al, 0
int 21h
Codes ends
end First

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

  1. Переменные a, b, c1, c2, c3, c4, ostacha, x, z, mesg, mesg1, AH, DX, bx, cx, dx, ah, dl, al, ch и bh используются для выполнения арифметических операций и вывода текста на экран.
  2. Код выполняет различные арифметические операции в зависимости от значения переменной a по сравнению с переменной b.
  3. Если значение a больше b, код выполняет деление a на b и добавляет результат к переменной c1.
  4. Если значение a меньше или равно b, код выполняет вычитание b из a и добавляет результат к переменной c1.
  5. Если значение a равно нулю, код выводит на экран сообщение Delenie na nol !.
  6. Если значение a не равно нулю, код выводит на экран значение a в десятичной форме с использованием функции int 21h.
  7. Затем код выполняет аналогичные действия для переменной ostacha.
  8. Код также выводит на экран символ - и точку в десятичной форме для переменной ostacha.
  9. Код завершается функцией int 21h, которая обеспечивает корректное завершение работы программы.

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

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