Лаборатораная работа №2 8 вариант
.docЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ
Лабораторная работа №2
по дисциплине
«Архитектура вычислительных систем»
Принципы устройства и работы компьютера архитектуры фон Неймана и основные особенности архитектуры x86
|
Студент |
|
|
|
|
|
||||||||
|
|
|
подпись, дата |
|
фамилия, инициалы |
|
||||||||
|
Группа |
|
АИ-11 |
|
|
|
|
|||||||
|
|
|
|
|
|
|
||||||||
|
Руководитель |
|
|
|
Болдырихин О.В. |
|
||||||||
|
|
|
|
|
|
|
||||||||
|
ученая степень, звание |
|
подпись, дата |
|
фамилия, инициалы |
|
Липецк 2013
-
Цель работы
Изучение порядка функционирования ЭВМ, организации взаимодействия процессора с памятью и устройствами ввода-вывода.
Вариант 8.
Проверка кода с контролем по нечетности на правильность и преобразование в двоичную систему счисления.
-
Листинг программы
1 ;InKoutD.asm
2
3
4 0000 data segment
5 0000 0000 a dw (?)
6 0002 8000 b dw 1000000000000000b
7 0004 0000 res dw (?)
8 0006 data ends
9
10 0000 code segment
11 assume cs:code, ds:data ;
12
13 0000 BA 0000s main: mov dx, data
14
15 0003 8E DA mov ds, dx
16
17 0005 BA B800 mov dx, 0B800h
18 0008 8E C2 mov es, dx
19 000A 33 FF xor di, di
20 000C 33 D2 xor dx, dx
21
22 000E B8 0720 mov ax, 0720h
23 0011 B9 07D0 mov cx, 80*25
24 0014 F3> AB rep stosw
25
26 0016 33 FF xor di, di
27 0018 B9 0010 mov cx, 10h
28
29 001B E4 60 inloop: in al, 60h
30 001D 3A C3 cmp al, bl
31 001F 74 FA je inloop
32 0021 8A D8 mov bl, al
33 0023 3C 01 cmp al, 01h
34 0025 75 03 jne NotEsc
35 0027 EB 5D 90 jmp quit
36 002A 3C 02 NotEsc: cmp al, 02h
37 002C 74 0E je num1
38 002E 3C 0B cmp al, 0Bh
39 0030 75 E9 jne inloop
40 0032 D1 E2 shl dx, 1
41 0034 26: C7 05 0730 mov es:[di], 0730h
42 0039 EB 0B 90 jmp NxtNum
43 003C D1 E2 num1: shl dx, 1
44 003E 83 CA 01 or dx, 1
45 0041 26: C7 05 0731 mov es:[di], 0731h
46 0046 47 NxtNum: inc di
47 0047 47 inc di
48 0048 49 dec cx
49 0049 75 D0 jnz inloop
50 004B 89 16 0000r mov a, dx
51
52
53 004F A1 0000r mov ax, a
54 0052 40 inc ax
55 0053 48 dec ax
56 0054 7A 03 jp x
57 0056 EB 05 90 jmp z
58 0059 03 06 0002r x: add ax, b
59 005D A3 0004r z: mov res, ax
60
61
62
63 0060 BB 8000 mov bx, 8000h
64 0063 BF 00A0 mov di, 80*2
65
66 0066 A1 0004r outloop:mov ax, res
67 0069 85 C3 test ax, bx
68 006B 75 08 jnz bit1
69 006D 26: C7 05 0730 mov es:[di], 0730h
70 0072 EB 06 90 jmp NxtBit
71 0075 26: C7 05 0731 bit1: mov es:[di], 0731h
72 007A 47 NxtBit: inc di
73 007B 47 inc di
74 007C D1 EB shr bx, 1
75 007E 73 E6 jnc outloop
76 0080 E4 60 pause: in al, 60h
77 0082 3C 01 cmp al, 01h
78 0084 75 FA jne pause
79 0086 B8 4C00 quit: mov ax, 4C00h
80 0089 CD 21 int 21h
81 008B code ends
82 end main
-
Контрольный пример
рисунок 1. Число с четным числом единиц
рисунок 2. Число с нечетным числом единиц
-
Вывод
В данной лабораторной работе я написал программу для проверки кода с контролем по нечетности на правильность и преобразование в двоичную систему счисления. В ней я объявил переменные двумя способами – в сегменте данных и в сегменте кода.
Так же были использованы команды mov ax для загрузки в регистр aх значение переменной, что означает пересылку в аккумулятор содержимого ячейки памяти с адресом.
Для вывода данных на дисплей используется текстовый режим 80*25 символов, 16 цветов.
Один физический адрес может давать разные логические адреса. Например физический адрес 0В000h соответствует следующим логическим адресам:
В800:0000
В000:8000
Суть программы заключается в вводе исходных данных с клавиатуры и после проверки флага PF результат выводится на экран.