Лекция: Пример отчета по лабораторной работе 1
Задача
Подсчитать количество цифр в данном тексте, заканчивающемся клавишей Esc (код 27).
С0-программа Результаты работы
int z; Тест от 9/10/08
main() 5
{ int c;
z=0; Кадр стека функции main
while ((c=getchar())!=27) ---------------------------------------
if (c>=48) 0 | Адрес предыдущего кадра |
if (c<=57) z=z+1; --------------------------------------
putchar(10); У функции main адрес возврата
putchar(13); отсутствует, т. к. она запускается
putn(z); из ОС.
putchar(10);
}
Oбъектная программа (приведена не полностью)
ASSUME CS:_KOM,SS:_STEK,DS:_DAN _KOM SEGMENT
;int z;
;main()
_main PROC FAR
MOV AX,_DAN
MOV DS,AX
MOV AX,_STEK
MOV SS,AX
LEA SP,_DNOST
; int c;
SUB SP,2
PUSH BP
MOV BP,SP
; z=0;
MOV AX,0
MOV z,AX
; while ((c=getchar())!=27)
_CC1:
CALL _getchar
PUSH AX
POP AX
MOV 2[BP],AX
PUSH AX
MOV BX,27
POP AX
CMP AX,BX
MOV AX,1
JNE _CC3
SUB AX,AX
_CC3:
PUSH AX
.. .
; putn(z);
MOV AX,z
PUSH AX
CALL _putn
; putchar(10);
MOV AX,10
PUSH AX
CALL _putchar
;
POP BP
ADD SP,2
MOV AH,4CH
INT 21H
_main ENDP
INCLUDE std.asm _KOM ENDS _STEK SEGMENT STACK
DW 100 DUP (?) _DNOST DW ?
_STEK ENDS
_DAN SEGMENT
z DW ?
_DAN ENDS
END _main
; Компилятоp С0 от 10/04/08:
; колич. ошибок 0
Лабораторная работа № 2
Транслятор языка С0
Цель работы — изучение методов трансляции на примере компилятора C0.
Программа компилятора приведена в файле C0.c и приложении 3. Подпрограммы в ней расположены сверху вниз по иерархии подпрограмм. В приложении 2 подпрограммы перечислены по алфавиту с указанием их назначения и номеров строк текста, где они расположены.