Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лаба 3 отчет.docx
Скачиваний:
0
Добавлен:
01.03.2025
Размер:
38.57 Кб
Скачать

Цель работы

Научиться анализировать ход выполнения программы на языке Ассемблера при помощи отладчика Turbo Debugger.

Задание

Дан массив Х[1..М]. Вычислить сумму элементов, удовлетворяющих условию A<=X[i]<=B. Используйте адресацию по базе с индексированием.

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

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 1

lab3_11.asm

LaborRabota3

1

2 print MACRO Mess

3 lea DX,Mess

4 mov AH,09h

5 int 21h

6 ENDM

7 vvod MACRO N

8 lea DX,N

9 mov AH,0Ah

10 int 21h

11 ENDM

12 print_sim MACRO Sim

13 mov DX,Sim

14 mov AH,06h

15 int 21h

16 ENDM

17 prin_sim1 MACRO sim

18 mov DL,Sim

19 mov AH,06h

20 int 21h

21 ENDM

22 ten MACRO xx,n

23 LOCAL m1,exit

24 cmp n,0

25 je exit

26 push AX

27 push CX

28 mov CX,n

29 mov AX,xx

30 m1:

31 mov DX,10

32 mul DX

33 loop m1

34 mov xx,AX

35 pop CX

36 pop AX

37 exit:

38 ENDM

39 asci_deg MACRO xx,str,len

40 LOCAL m1

41 mov AX,0

42 mov BX,0

43 mov SI,0

44 mov CH,0

45 mov CL,len

46 mov DI,CX

47 dec DI

48 m1:

49 mov BL,str[SI]

50 mov BH,0

51 sub BX,30h

52 ten BX,DI

53 add AX,BX

54 inc SI

55 dec DI

56 loop m1

57 mov xx,AX

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 2

lab3_11.asm

LaborRabota3

58 Endm

59

60 0000 my_stack SEGMENT STACK 'Stack'

61 0000 40*(????) DW 64 DUP (?)

62 0080 my_stack ENDS

63

64 0000 data SEGMENT

65 0000 0A*(??) mas db 10 dup(?)

66 000A 03 ?? Temp1 db 3,?

67 000C 02*(??) Temp db 2 dup(?)

68 000E 0A 0D 82 A2 A5 A4 A8+ mes1 db 10,13,'Введите $'

69 E2 A5 20 24

70 0019 2D A9 20 ED AB A5 AC+ mes2 db '-й элемент массива=$'

71 A5 AD E2 20 AC A0 E1+

72 E1 A8 A2 A0 3D 24

73 002D 0A 0D 82 A2 A5 A4 A8+ mes3 db 10,13,'Введите число элементов массива=$'

74 E2 A5 20 E7 A8 E1 AB+

75 AE 20 ED AB A5 AC A5+

76 AD E2 AE A2 20 AC A0+

77 E1 E1 A8 A2 A0 3D 24

78 0050 0A 0D 82 A2 A5 A4 A8+ mes4 db 10,13,'Введите число A=$'

79 E2 A5 20 E7 A8 E1 AB+

80 AE 20 41 3D 24

81 0063 0A 0D 82 A2 A5 A4 A8+ mes5 db 10,13,'Введите число B=$'

82 E2 A5 20 E7 A8 E1 AB+

83 AE 20 42 3D 24

84 0076 0A 0D 91 E3 AC AC A0+ mes6 db 10,13,'Сумма элементов удовлетворяющих условию=$'

85 20 ED AB A5 AC A5 AD+

86 E2 AE A2 20 E3 A4 AE+

87 A2 AB A5 E2 A2 AE E0+

88 EF EE E9 A8 E5 20 E3+

89 E1 AB AE A2 A8 EE 3D+

90 24

91 00A1 03 ?? MM db 3,?

92 00A3 02*(??) M1 db 2 dup(?)

93 00A5 03 ?? AA db 3,?

94 00A7 02*(??) A1 db 2 dup(?)

95 00A9 03 ?? BB db 3,?

96 00AB 02*(??) B1 db 2 dup(?)

97 00AD 01*(????) M dw 1 dup(?)

98 00AF 01*(????) A dw 1 dup(?)

99 00B1 01*(????) B dw 1 dup(?)

100 00B3 0A 0D 24 Ent db '',0Ah,0Dh,'$'

101 00B6 01*(????) Tm dw 1 dup(?)

102 00B8 01*(????) Tm1 dw 1 dup(?)

103 00BA 01*(????) Tm2 dw 1 dup(?)

104 00BC 01*(????) Sum dw 1 dup(?)

105 00BE data ends

106

107 0000 text SEGMENT

108 assume CS:text, DS:data, SS:my_stack

109 0000 main proc far

110 0000 1E push DS

111 0001 33 C0 xor AX,AX

112 0003 50 push AX

113 0004 B8 0000s mov AX,data

114 0007 8E D8 mov DS,AX

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 3

lab3_11.asm

LaborRabota3

115

116 print Mes3

1 117 0009 BA 002Dr lea DX,Mes3

1 118 000C B4 09 mov AH,09h

1 119 000E CD 21 int 21h

120 Vvod MM

1 121 0010 BA 00A1r lea DX,MM

1 122 0013 B4 0A mov AH,0Ah

1 123 0015 CD 21 int 21h

124 asci_deg M,M1,[MM]+1

1 125 0017 B8 0000 mov AX,0

1 126 001A BB 0000 mov BX,0

1 127 001D BE 0000 mov SI,0

1 128 0020 B5 00 mov CH,0

1 129 0022 8A 0E 00A2r mov CL,[MM]+1

1 130 0026 8B F9 mov DI,CX

1 131 0028 4F dec DI

1 132 0029 ??0000:

1 133 0029 8A 9C 00A3r mov BL,M1[SI]

1 134 002D B7 00 mov BH,0

1 135 002F 83 EB 30 sub BX,30h

1 136 ten BX,DI

2 137 0032 83 FF 00 cmp DI,0

2 138 0035 74 11 je ??0002

2 139 0037 50 push AX

2 140 0038 51 push CX

2 141 0039 8B CF mov CX,DI

2 142 003B 8B C3 mov AX,BX

2 143 003D ??0001:

2 144 003D BA 000A mov DX,10

2 145 0040 F7 E2 mul DX

2 146 0042 E2 F9 loop ??0001

2 147 0044 8B D8 mov BX,AX

2 148 0046 59 pop CX

2 149 0047 58 pop AX

2 150 0048 ??0002:

1 151 0048 03 C3 add AX,BX

1 152 004A 46 inc SI

1 153 004B 4F dec DI

1 154 004C E2 DB loop ??0000

1 155 004E A3 00ADr mov M,AX

156 0051 8B 0E 00ADr mov CX,M

157 0055 BE 0000 mov SI,0

158 0058 BB 0000 mov BX,0

159 005B N:

160 print Mes1

1 161 005B BA 000Er lea DX,Mes1

1 162 005E B4 09 mov AH,09h

1 163 0060 CD 21 int 21h

164 0062 83 C6 31 add SI,31h

165 print_sim SI

1 166 0065 8B D6 mov DX,SI

1 167 0067 B4 06 mov AH,06h

1 168 0069 CD 21 int 21h

169 006B 83 EE 31 sub SI,31h

170 print Mes2

1 171 006E BA 0019r lea DX,Mes2

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 4

lab3_11.asm

LaborRabota3

1 172 0071 B4 09 mov AH,09h

1 173 0073 CD 21 int 21h

174 Vvod Temp1

1 175 0075 BA 000Ar lea DX,Temp1

1 176 0078 B4 0A mov AH,0Ah

1 177 007A CD 21 int 21h

178 007C 89 36 00B6r mov Tm,SI

179 0080 89 0E 00B8r mov Tm1,CX

180 asci_deg Tm2,Temp,[Temp1]+1

1 181 0084 B8 0000 mov AX,0

1 182 0087 BB 0000 mov BX,0

1 183 008A BE 0000 mov SI,0

1 184 008D B5 00 mov CH,0

1 185 008F 8A 0E 000Br mov CL,[Temp1]+1

1 186 0093 8B F9 mov DI,CX

1 187 0095 4F dec DI

1 188 0096 ??0003:

1 189 0096 8A 9C 000Cr mov BL,Temp[SI]

1 190 009A B7 00 mov BH,0

1 191 009C 83 EB 30 sub BX,30h

1 192 ten BX,DI

2 193 009F 83 FF 00 cmp DI,0

2 194 00A2 74 11 je ??0005

2 195 00A4 50 push AX

2 196 00A5 51 push CX

2 197 00A6 8B CF mov CX,DI

2 198 00A8 8B C3 mov AX,BX

2 199 00AA ??0004:

2 200 00AA BA 000A mov DX,10

2 201 00AD F7 E2 mul DX

2 202 00AF E2 F9 loop ??0004

2 203 00B1 8B D8 mov BX,AX

2 204 00B3 59 pop CX

2 205 00B4 58 pop AX

2 206 00B5 ??0005:

1 207 00B5 03 C3 add AX,BX

1 208 00B7 46 inc SI

1 209 00B8 4F dec DI

1 210 00B9 E2 DB loop ??0003

1 211 00BB A3 00BAr mov Tm2,AX

212 00BE A1 00BAr mov AX,Tm2

213 00C1 8B 36 00B6r mov SI,Tm

214 00C5 88 84 0000r mov Mas[SI],AL

215 00C9 8B 0E 00B8r mov CX,Tm1

216 00CD 46 inc SI

217 00CE E2 8B loop N

218 print Mes4

1 219 00D0 BA 0050r lea DX,Mes4

1 220 00D3 B4 09 mov AH,09h

1 221 00D5 CD 21 int 21h

222 Vvod AA

1 223 00D7 BA 00A5r lea DX,AA

1 224 00DA B4 0A mov AH,0Ah

1 225 00DC CD 21 int 21h

226 asci_deg A,A1,[AA]+1

1 227 00DE B8 0000 mov AX,0

1 228 00E1 BB 0000 mov BX,0

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 5

lab3_11.asm

LaborRabota3

1 229 00E4 BE 0000 mov SI,0

1 230 00E7 B5 00 mov CH,0

1 231 00E9 8A 0E 00A6r mov CL,[AA]+1

1 232 00ED 8B F9 mov DI,CX

1 233 00EF 4F dec DI

1 234 00F0 ??0006:

1 235 00F0 8A 9C 00A7r mov BL,A1[SI]

1 236 00F4 B7 00 mov BH,0

1 237 00F6 83 EB 30 sub BX,30h

1 238 ten BX,DI

2 239 00F9 83 FF 00 cmp DI,0

2 240 00FC 74 11 je ??0008

2 241 00FE 50 push AX

2 242 00FF 51 push CX

2 243 0100 8B CF mov CX,DI

2 244 0102 8B C3 mov AX,BX

2 245 0104 ??0007:

2 246 0104 BA 000A mov DX,10

2 247 0107 F7 E2 mul DX

2 248 0109 E2 F9 loop ??0007

2 249 010B 8B D8 mov BX,AX

2 250 010D 59 pop CX

2 251 010E 58 pop AX

2 252 010F ??0008:

1 253 010F 03 C3 add AX,BX

1 254 0111 46 inc SI

1 255 0112 4F dec DI

1 256 0113 E2 DB loop ??0006

1 257 0115 A3 00AFr mov A,AX

258 print Mes5

1 259 0118 BA 0063r lea DX,Mes5

1 260 011B B4 09 mov AH,09h

1 261 011D CD 21 int 21h

262 Vvod BB

1 263 011F BA 00A9r lea DX,BB

1 264 0122 B4 0A mov AH,0Ah

1 265 0124 CD 21 int 21h

266 asci_deg B,B1,[BB]+1

1 267 0126 B8 0000 mov AX,0

1 268 0129 BB 0000 mov BX,0

1 269 012C BE 0000 mov SI,0

1 270 012F B5 00 mov CH,0

1 271 0131 8A 0E 00AAr mov CL,[BB]+1

1 272 0135 8B F9 mov DI,CX

1 273 0137 4F dec DI

1 274 0138 ??0009:

1 275 0138 8A 9C 00ABr mov BL,B1[SI]

1 276 013C B7 00 mov BH,0

1 277 013E 83 EB 30 sub BX,30h

1 278 ten BX,DI

2 279 0141 83 FF 00 cmp DI,0

2 280 0144 74 11 je ??000B

2 281 0146 50 push AX

2 282 0147 51 push CX

2 283 0148 8B CF mov CX,DI

2 284 014A 8B C3 mov AX,BX

2 285 014C ??000A:

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 6

lab3_11.asm

LaborRabota3

2 286 014C BA 000A mov DX,10

2 287 014F F7 E2 mul DX

2 288 0151 E2 F9 loop ??000A

2 289 0153 8B D8 mov BX,AX

2 290 0155 59 pop CX

2 291 0156 58 pop AX

2 292 0157 ??000B:

1 293 0157 03 C3 add AX,BX

1 294 0159 46 inc SI

1 295 015A 4F dec DI

1 296 015B E2 DB loop ??0009

1 297 015D A3 00B1r mov B,AX

298 0160 BE 0000 mov SI,0

299 0163 8B 0E 00ADr mov CX,M

300 0167 BA 0000 mov DX,0

301 016A B8 0000 mov AX,0

302 016D N1:

303 016D 8A 84 0000r mov AL,Mas[SI]

304 0171 8B 1E 00AFr mov BX,A

305 0175 3B C3 cmp AX,BX

306 0177 7D 03 jge E

307 0179 EB 10 90 jmp Exit

308 017C E:

309 017C 8B 1E 00B1r mov BX,B

310 0180 3B 06 00B1r cmp AX,B

311 0184 7E 03 jle E1

312 0186 EB 03 90 jmp Exit

313 0189 E1:

314 0189 03 D0 add DX,AX

315 018B Exit:

316 018B 46 inc Si

317 018C E2 DF loop N1

318 018E 89 16 00BCr mov Sum,DX

319 print Mes6

1 320 0192 BA 0076r lea DX,Mes6

1 321 0195 B4 09 mov AH,09h

1 322 0197 CD 21 int 21h

323 0199 8B 16 00BCr mov DX,Sum

324 019D 8B C2 mov AX,DX

325 019F 3C 0A cmp AL,10

326 01A1 7D 03 jge D

327 01A3 EB 0B 90 jmp D1

328 01A6 D:

329 01A6 B3 0A mov BL,10

330 01A8 F6 F3 div BL

331 01AA 8B D8 mov BX,AX

332 01AC 8A C7 mov AL,BH

333 01AE 8A E3 mov AH,BL

334 01B0 D1:

335 01B0 04 30 add AL,30h

336 01B2 80 C4 30 add AH,30h

337 01B5 8A F8 mov BH,AL

338 01B7 8A DC mov BL,AH

339 prin_sim1 BL

1 340 01B9 8A D3 mov DL,BL

1 341 01BB B4 06 mov AH,06h

1 342 01BD CD 21 int 21h

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 7

lab3_11.asm

LaborRabota3

343 prin_sim1 BH

1 344 01BF 8A D7 mov DL,BH

1 345 01C1 B4 06 mov AH,06h

1 346 01C3 CD 21 int 21h

347 print Ent

1 348 01C5 BA 00B3r lea DX,Ent

1 349 01C8 B4 09 mov AH,09h

1 350 01CA CD 21 int 21h

351 ;-------------------------

352 01CC CB ret

353 01CD main endp

354 01CD text ends

355 end main

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 8

Symbol Table

LaborRabota3

Symbol Name Type Value

??0000 Near TEXT:0029

??0001 Near TEXT:003D

??0002 Near TEXT:0048

??0003 Near TEXT:0096

??0004 Near TEXT:00AA

??0005 Near TEXT:00B5

??0006 Near TEXT:00F0

??0007 Near TEXT:0104

??0008 Near TEXT:010F

??0009 Near TEXT:0138

??000A Near TEXT:014C

??000B Near TEXT:0157

??DATE Text "01/03/13"

??FILENAME Text "lab3_11 "

??TIME Text "21:32:02"

??VERSION Number 0314

@CPU Text 0101H

@CURSEG Text TEXT

@FILENAME Text LAB3_11

@WORDSIZE Text 2

A Word DATA:00AF

A1 Byte DATA:00A7

AA Byte DATA:00A5

B Word DATA:00B1

B1 Byte DATA:00AB

BB Byte DATA:00A9

D Near TEXT:01A6

D1 Near TEXT:01B0

E Near TEXT:017C

E1 Near TEXT:0189

ENT Byte DATA:00B3

EXIT Near TEXT:018B

M Word DATA:00AD

M1 Byte DATA:00A3

MAIN Far TEXT:0000

MAS Byte DATA:0000

MES1 Byte DATA:000E

MES2 Byte DATA:0019

MES3 Byte DATA:002D

MES4 Byte DATA:0050

MES5 Byte DATA:0063

MES6 Byte DATA:0076

MM Byte DATA:00A1

N Near TEXT:005B

N1 Near TEXT:016D

SUM Word DATA:00BC

TEMP Byte DATA:000C

TEMP1 Byte DATA:000A

TM Word DATA:00B6

TM1 Word DATA:00B8

TM2 Word DATA:00BA

Turbo Assembler Version 3.2 01/03/13 21:32:02 Page 9

Symbol Table

LaborRabota3

Macro Name

ASCI_DEG

PRINT

PRINT_SIM

PRIN_SIM1

TEN

VVOD

Groups & Segments Bit Size Align Combine Class

DATA 16 00BE Para none

MY_STACK 16 0080 Para Stack STACK

TEXT 16 01CD Para none

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]