This repository has been archived by the owner on Feb 11, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Lab 03
wcdbmv edited this page Feb 22, 2019
·
2 revisions
Подготовить приведённую ниже программу к отладке в CV:
- Скопировать текст программы в файл
LAB03.ASM
- Выполнить трансляцию:
MASM /Zi LAB03.ASM,,;
- Выполнить программу:
LINK /CO LAB03.OBJ;
SSTACK SEGMENT PARA STACK 'STACK'
DB 64 DUP('СТЕК____')
SSTACK ENDS
DSEG SEGMENT PARA PUBLIC 'DATA'
X DB 0,1,2,3,4,5,6,7
B DB 1B
K DB ?
DSEG ENDS
SUBTTL ОСНОВНАЯ ПРОГРАММА
PAGE
CSEG SEGMENT PARA PUBLIC 'CODE'
ASSUME CS:CSEG,DS:DSEG,SS:SSTACK
START PROC FAR
MOV AX,DSEG
MOV DS,AX
M1: MOV K,2
MOV SI,0
MOV CX,8
MOV AL,B
M2: TEST X[SI],AL ; ZF:=!(X[SI] & AL)
JNZ M3
DEC K
JZ M4
M3: INC SI
LOOP M2 ; CX-- и переход на M, если CX<>0
M4: ADD SI,'0'
MOV AH,2
MOV DX,SI
M5: INT 21H
M6: MOV AH,4CH
MOV AL,0
INT 21H
START ENDP
CSEG ENDS
END START
Проследить за выполнением команд от M1
до M6
и изменением переменных и регистров. Сформулировать условие задачи, решаемой программой. (Вывод индекса k-го чётного числа в массиве X
)
Составить файл LAB03.INP
с командами CV так, чтобы его выполнение привело к созданию файла LAB03.OUT
, содержащего весь вывод в окно диалога. Этот вывод должен быть на метках M1
... M6
следующую информацию:
- значения регистров, флагов и текущую команду программы,
- значения переменной
K
.
; LAB03.INP
T>>LAB03.OUT
BP M1 "R;? K,d;E"
BP M2 "R;? K,d;E"
BP M3 "R;? K,d;E"
BP M4 "R;? K,d;E"
BP M5 "R;? K,d;E"
BP M6 "R;? K,d;E"
; CV
<LAB03.INP