Скачиваний:
73
Добавлен:
11.02.2014
Размер:
52.22 Кб
Скачать

Министерство образования и науки Российской Федерации

Курский Государственный Технический Университет

Кафедра ПО ВТ

ЛАБОРАТОРНАЯ РАБОТА №2

ИЗУЧЕНИЕ АРИФМЕТИЧЕСКИХ КОМАНД

выполнила: студентка гр. ПО-42

Музалева Н. В.

проверил: Родионов Д. И.

Курск 2007

Цель лабораторной работы

Изучение ситуаций переноса и/или переполнения в командах сложения, вычитания, умножения, деления. Изучение особенностей знаковой и беззнаковой интерпретации данных. Изучение синтаксиса команд умножения и деления.

Задание

Написать программу, выполняющую сложение и вычитание двух- и однобайтных чисел с переполнением (заёмом) и без; знаковое и беззнаковое умножение двух- и однобайтных чисел; знаковое и беззнаковое деление двухбайтного числа на однобайтное и четырехбайтного на двухбайтное число.

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

Turbo Assembler Version 3.1 17/03/07 17:02:38 Page 1

2.asm

1 0000 .model small

2 0000 .stack 512

3 0000 .data

4

5 0000 ?? byteSum db ?

6 0001 ???? wordSum dw ?

7 0003 ?? byteSub db ?

8 0004 ???? wordSub dw ?

9 0006 ???? wordMul dw ?

10 0008 ???????? doubleMul dd ?

11 000C ?? byteDiv db ?

12 000D ?? byteOst db ?

13 000E ???? wordDiv dw ?

14 0010 ???? wordOst dw ?

15

16 0012 .code

17 0000 B8 0000s mov AX,@data

18 0003 8E D8 mov DS,AX

19

20 ;сложение однобайтных чисел без переполнения

21 ;(byteSum = 1Ch + C1h = DDh, CF = 0)

22 0005 B0 1C mov AL,1Ch

23 0007 04 C1 add AL,0C1h

24 0009 A2 0000r mov byteSum,AL

25

26 ;сложение однобайтных чисел с переполнением

27 ;(byteSum = 1Ch + F2h = 0Eh, CF = 1)

28 000C B0 1C mov AL,1Ch

29 000E 04 F2 add AL,0F2h

30 0010 A2 0000r mov byteSum,AL

31

32 ;сложение двухбайтных чисел без переполнения

33 ;(wordSum = 7E7Eh + 2121h = 9F9Fh, CF = 0)

34 0013 B8 7E7E mov AX,7E7Eh

35 0016 05 2121 add AX,2121h

36 0019 A3 0001r mov wordSum,AX

37

38 ;сложение двухбайтных чисел c переполнением

39 ;(wordSum = E7E7h + 2121h = 0908h, CF = 1)

40 001C B8 E7E7 mov AX,0E7E7h

41 001F 05 2121 add AX,2121h

42 0022 A3 0001r mov wordSum,AX

43

44 ;вычитание однобайтных чисел без заема

45 ;(byteSub = DDh - 1Ch = C1h)

46 0025 B0 DD mov AL,0DDh

47 0027 2C 1C sub AL,1Ch

48 0029 A2 0003r mov byteSub,AL

49

50 ;вычитание однобайтных чисел с заемом

51 ;(byteSub = 1Ch - DDh = 3Fh)

52 002C B0 1C mov AL,1Ch

53 002E 2C DD sub AL,0DDh

54 0030 A2 0003r mov byteSub,AL

55

56 ;вычитание двухбайтных чисел без заема

57 ;(byteSub = 7E7Eh - 2121h = 5D5Dh)

58 0033 B8 7E7E mov AX,7E7Eh

59 0036 2D 2121 sub AX,2121h

60 0039 A3 0004r mov wordSub,AX

61

62 ;вычитание двухбайтных чисел с заемом

63 ;(byteSub = 2121h - 7E7Eh = A2A3h)

64 003C B8 2121 mov AX,2121h

65 003F 2D 7E7E sub AX,7E7Eh

66 0042 A3 0004r mov wordSub,AX

67

68 ;умножение однобайтных чисел (беззнаковое)

69 ;(doubleMul = CBh * EEh = BCBAh = 203 * 238 = 48314, SF = 1)

70 0045 B0 CB mov AL,0CBh

71 0047 B3 EE mov BL,0EEh

72 0049 F6 E3 mul BL

73 004B A3 0006r mov wordMul,AX

74

75 ;умножение однобайтных числел (знаковое)

76 ;(doubleMul = CBh * EEh = 03BAh = -53 * -18 = 954,SF = 1)

77 004E B0 CB mov AL,0CBh

78 0050 B3 EE mov BL,0EEh

79 0052 F6 EB imul BL

80 0054 A3 0006r mov wordMul,AX

81

82 ;умножение двухбайтных чисел (беззнаковое)

83 ;(doubleMul=EDCBh*1234h=10E8933Ch=60875*4460=283677500,SF=1)

84 0057 B8 EDCB mov AX,0EDCBh

85 005A BB 1234 mov BX,1234h

86 005D F7 E3 mul BX

87 005F A3 0008r mov word ptr doubleMul,AX

88 0062 89 16 000Ar mov word ptr doubleMul + 2,DX

89

90 ;умножение двухбайтных чисел (знаковое)

91 ;(doubleMul=EDCBh*1234h=FEB4933Ch=-4661*4600=-21720260,SF=0)

92 0066 B8 EDCB mov AX,0EDCBh

93 0069 BB 1234 mov BX,1234h

94 006C F7 EB imul BX

95 006E A3 0008r mov word ptr doubleMul,AX

96 0071 89 16 000Ar mov word ptr doubleMul + 2,DX

97

98 ;деление двухбайтного числа на однобайтное (беззнаковое)

99 ;(byteDiv=CDCDh/EEh=DDh=52685/238=221; byteOst = 57h = 87)

100 0075 B8 CDCD mov AX,0CDCDh

101 0078 B3 EE mov BL,0EEh

102 007A F6 F3 div BL

103 007C A2 000Cr mov byteDiv,AL

104 007F 88 26 000Dr mov byteOst,AH

105

106 ;деление двухбайтного числа на однобайтное (знаковое)

107 ;(byteDiv=EDCBh/57h=CBh=-4661/87=-53; byteOst = CEh = -50)

108 0083 B8 EDCB mov AX,0EDCBh

109 0086 B3 57 mov BL,57h

110 0088 F6 FB idiv BL

111 008A A2 000Cr mov byteDiv,AL

112 008D 88 26 000Dr mov byteOst,AH

113

114 ;деление четырехбайтного числа на двухбайтное (беззнаковое)

115 ;(wordDiv = 123412h/1C1Ch = 00A5h = 1192978/7196=221; byteOst = 1606h = 5638)

116 0091 BA 0012 mov DX,12h

117 0094 B8 3412 mov AX,3412h

118 0097 BB 1C1C mov BX,1C1Ch

119 009A F7 F3 div BX

120 009C A3 000Er mov wordDiv,AX

121 009F 89 16 0010r mov wordOst,DX

122

123 ;деление четырехбайтного числа на двухбайтное (знаковое)

124 ;(wordDiv = 123412h/C1C1h = FFB6h = 1192978/(-15935) = -74; byteOst = 35DCh = 13788)

125 00A3 BA 0012 mov DX,12h

126 00A6 B8 3412 mov AX,3412h

127 00A9 BB C1C1 mov BX,0C1C1h

128 00AC F7 FB idiv BX

129 00AE A3 000Er mov wordDiv,AX

130 00B1 89 16 0010r mov wordOst,DX

131

132 00B5 B0 00 mov AL,0

133 00B7 B4 4C mov AH,4ch

134 00B9 CD 21 int 21h

135

136 end

Turbo Assembler Version 3.1 17/03/07 17:02:38 Page 4

Symbol Table

Symbol Name Type Value

??DATE Text "17/03/07"

??FILENAME Text "2 "

??TIME Text "17:02:38"

??VERSION Number 030A

@32BIT Text 0

@CODE Text _TEXT

@CODESIZE Text 0

@CPU Text 0101H

@CURSEG Text _TEXT

@DATA Text DGROUP

@DATASIZE Text 0

@FILENAME Text 2

@INTERFACE Text 00H

@MODEL Text 2

@STACK Text DGROUP

@WORDSIZE Text 2

BYTEDIV Byte DGROUP:000C

BYTEOST Byte DGROUP:000D

BYTESUB Byte DGROUP:0003

BYTESUM Byte DGROUP:0000

DOUBLEMUL Dword DGROUP:0008

WORDDIV Word DGROUP:000E

WORDMUL Word DGROUP:0006

WORDOST Word DGROUP:0010

WORDSUB Word DGROUP:0004

WORDSUM Word DGROUP:0001

Groups & Segments Bit Size Align Combine Class

DGROUP Group

STACK 16 0200 Para Stack STACK

_DATA 16 0012 Word Public DATA

_TEXT 16 00BB Word Public CODE

Соседние файлы в папке лабораторные работы по ASSAMBLER