Привести блок-схему в соответствие с кодом - Assembler
Формулировка задачи:
Ребят, извиняюсь, но это опять я, нерадивый студент.
Вот есть такой код, все работает, все как надо. проблем нет
К нему идёт такая блок схема.
При попытке сдать лабу, преподаватель сделал такую пометку, уже 4ро человек посмотрело, и мы не можем понять, где ошибка.
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
Решение задачи: «Привести блок-схему в соответствие с кодом»
textual
Листинг программы
mov ax,1 cwd jcxz @@02 mov bx,x sub bx,a mov y,bx @@01: cwd mul y loop @@01 @@02:
Объяснение кода листинга программы
- mov ax,1 — значение переменной ax становится равным 1.
- cwd — выполняет обращение слова (слово становится двойным).
- jcxz @@02 — если значение регистра cx равно нулю, то выполняется переход на метку @@02.
- mov bx,x — значение переменной bx становится равным значению переменной x.
- sub bx,a — значение переменной bx уменьшается на значение переменной a.
- mov y,bx — значение переменной y становится равным значению переменной bx.
- cwd — выполняет обращение слова (слово становится двойным).
- mul y — значение переменной y умножается на значение переменной ax.
- loop @@01 — выполняется переход на метку @@01.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д