Привести блок-схему в соответствие с кодом - 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.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д