Skip to content

arturyumaev/x8086-16bit-MASM-Course-BMSTU

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

LAB2

Задание 1

Подготовить приведенную ниже программу к отладке:
а) скопировать текст программы в файл KR_1.ASM;
б) выполнить трансляцию: MASM /Zi KR_1.ASM,,;
в) выполнить компоновку: LINK /CO KR_1.OBJ;

SSTACK	SEGMENT PARA STACK  'STACK'
		DB   64 DUP('STACK____')
SSTACK  ENDS

DSEG	SEGMENT  PARA PUBLIC 'DATA'
     CA        DB      'A'
     KA        DB      '65'
     TXT       DB      'symbol "'
     C$        DB      ?
               DB      '" has code '
    KCH1       DB      ?
    KCH2       DB      ?
               DB      10,13,'$'
    MSG0       DB      'WORK BEGIN',13,10,'$'
    MSG1       DB      'END OF WORK',13,10,'$'
DSEG	ENDS

SUBTTL         MAIN PROGRAM
PAGE
     CSEG      SEGMENT PARA PUBLIC 'CODE'
               ASSUME CS:CSEG,DS:DSEG,SS:SSTACK

     BEGIN     PROC FAR

               PUSH  DS ; LOAD IN STACK PARAGRAPH'S NUMBER OF RETURN ADDRESS
               MOV  AX,0
               PUSH  AX

     ; LOAD DATA SEGMENT ADDRESS: DS
     M1:       MOV  AX,DSEG
               MOV  DS,AX

     ; TEXT OUTPUT "WORK BEGIN"
     M2:       MOV  AH,9
               MOV  DX,OFFSET MSG0
               INT  21H

     ; STRING OUTPUT "SYMBOL 'A' HAS CODE 65"
     MA:       MOV  AL,CA
               MOV  C$,AL
                  MOV  AX,WORD PTR KA
                  MOV  WORD PTR KCH1,AX
               MOV  AH,9
               MOV DX,OFFSET TXT
               INT  21H

     ; STRING "SYMBOL 'B' HAS CODE 66"
     MB:       INC  C$
               INC  KCH1+1
               INT  21H

     ; STRING OUTPUT "SYMBOL 'C' HAS CODE 67"
     MC:       INC  C$
               INC  KCH1+1
               INT  21H

     ; STRING OUTPUT "END OF WORK"
     M3:       MOV  AH,9
               MOV  DX,OFFSET MSG1
               INT  21H

     ; RETURN TO MS DOS (DEBUGGER)
               RET
BEGIN     ENDP
CSEG      ENDS
END  BEGIN

Задание 3

шаг 1
Установить командой W слежение:

а) за переменной С$,

  • command...

б) за выражениями KCH1-'0', KCH2-'0',

  • W? KCH1-'0',d // Наблюдение в десятичном виде
  • W? KCH2-'0',d // Наблюдение в десятичном виде

в) за верхней частью стека (двумя способами).

  • WW SS:SP // Вторая W-двойное слово, следим за двумя верхними байтами стека

Команды установок записать в соответствующих пунктах a), б), в) задания 3.
Проследить за их изменениями по шагам.

  • command...

Удалить точки слежения.

  • command...

шаг 2
Установить условные точки останова так, чтобы останов был:
a) при изменении переменных KCH1 и KCH2;

  • TP? KCH1

  • TP? KCH2

б) когда переменная C$ имеет значение 'B'.

  • WP? C$=='B'

Проверить останов при этих условиях.

шаг 3
Установить безусловные точки останова на строках программы с метками MB, MC и M3.

  • command...

Обеспечить в них вывод в окно диалога байтов из диапазона от TXT до MSG0 и продолжение выполнения программы с задержкой в 3 секунды. Перед вводом команд установить вывод информации в окно диалога.

  • D TXT MSG0
  • BP MB "D TXT MSG0; ::::::; E"
  • BP MC "D TXT MSG0; ::::::; E"
  • BP M3 "D TXT MSG0; ::::::; E"