Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лаборатораная работа №2 8 вариант

.doc
Скачиваний:
24
Добавлен:
20.06.2014
Размер:
103.42 Кб
Скачать

ЛИПЕЦКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ

КАФЕДРА АВТОМАТИЗИРОВАННЫХ СИСТЕМ УПРАВЛЕНИЯ

Лабораторная работа №2

по дисциплине

«Архитектура вычислительных систем»

Принципы устройства и работы компьютера архитектуры фон Неймана и основные особенности архитектуры x86

Студент

подпись, дата

фамилия, инициалы

Группа

АИ-11

Руководитель

Болдырихин О.В.

ученая степень, звание

подпись, дата

фамилия, инициалы

Липецк 2013

  1. Цель работы

Изучение порядка функционирования ЭВМ, организации взаимодействия процессора с памятью и устройствами ввода-вывода.

Вариант 8.

Проверка кода с контролем по нечетности на правильность и преобразование в двоичную систему счисления.

  1. Листинг программы

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. Контрольный пример

рисунок 1. Число с четным числом единиц

рисунок 2. Число с нечетным числом единиц

  1. Вывод

В данной лабораторной работе я написал программу для проверки кода с контролем по нечетности на правильность и преобразование в двоичную систему счисления. В ней я объявил переменные двумя способами – в сегменте данных и в сегменте кода.

Так же были использованы команды mov ax для загрузки в регистр значение переменной, что означает пересылку в аккумулятор содержимого ячейки памяти с адресом.

Для вывода данных на дисплей используется текстовый режим 80*25 символов, 16 цветов.

Один физический адрес может давать разные логические адреса. Например физический адрес 0В000h соответствует следующим логическим адресам:

В800:0000

В000:8000

Суть программы заключается в вводе исходных данных с клавиатуры и после проверки флага PF результат выводится на экран.