Привести блок-схему в соответствие с кодом - Assembler

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

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

Ребят, извиняюсь, но это опять я, нерадивый студент. Вот есть такой код, все работает, все как надо. проблем нет
include 'emu8086.inc'
#make_COM#
 
; COM file is loaded at CS:0100h
ORG 100h
 
JMP START
task    db 10, 13, 'Лабораторнаяработа №4'
    db 10, 13, 'Y=(x-a)^n'
    db 10, 13, '$'  
msg_x   db 10, 13, 'Введите x: $'
msg_a   db 10, 13, 'Введите a: $'
msg_n   db 10, 13, 'Введите n: $'
msg_y   db 10, 13, 'У = ', '$'
    x dw ?
    a dw ?
    n dw ?
    y dw 1
    yy dw ?
    
START:
    ;вывод задания на экран
    LEA DX, task
    MOV AH, 9
    INT 21h
    
    ;ввод x
    LEA DX, msg_x
    MOV AH, 9
    INT 21h
    call SCAN_NUM
    MOV x, CX
    
    ;ввод a
    LEA DX, msg_a
    MOV AH, 9
    INT 21h
    call SCAN_NUM
    MOV a, CX
    
    ;ввод n
    LEA DX, msg_n
    MOV AH, 9
    INT 21h
    call SCAN_NUM
    MOV n, CX
    
    MOV AX, 0
    cmp AX, n
    je then1
    MOV AX, x
    SUB AX, a
    MOV yy, AX
    MOV y, AX
main:   
    MOV AX, 1
    cmp AX, n
    je esc
    MOV AX, yy
    MUL y
    MOV y, AX
    MOV AX, n
    SUB AX, 1
    MOV n, AX
    jmp main
    
then1:
    MOV AX, 1
    MOV y, AX
    jmp esc
    
    esc:
    ;Вывод результата
    LEA DX, msg_y
    MOV AH, 9
    INT 21h
    MOV AX, y
    call PRINT_NUM
    
;exit to OS
    MOV AH, 4Ch
    INT 21h
    DEFINE_SCAN_NUM
    DEFINE_PRINT_STRING
    DEFINE_PRINT_NUM
    DEFINE_PRINT_NUM_UNS
    DEFINE_PTHIS    
    
    END
К нему идёт такая блок схема. При попытке сдать лабу, преподаватель сделал такую пометку, уже 4ро человек посмотрело, и мы не можем понять, где ошибка.

Решение задачи: «Привести блок-схему в соответствие с кодом»

textual
Листинг программы
        mov ax,1
        cwd
        jcxz    @@02
        mov bx,x
        sub bx,a
        mov y,bx
@@01:       cwd
        mul y
        loop    @@01
@@02:

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

  1. mov ax,1 — значение переменной ax становится равным 1.
  2. cwd — выполняет обращение слова (слово становится двойным).
  3. jcxz @@02 — если значение регистра cx равно нулю, то выполняется переход на метку @@02.
  4. mov bx,x — значение переменной bx становится равным значению переменной x.
  5. sub bx,a — значение переменной bx уменьшается на значение переменной a.
  6. mov y,bx — значение переменной y становится равным значению переменной bx.
  7. cwd — выполняет обращение слова (слово становится двойным).
  8. mul y — значение переменной y умножается на значение переменной ax.
  9. loop @@01 — выполняется переход на метку @@01.

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


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

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

7   голосов , оценка 4.286 из 5