отчет asm 8 (Готовая лаба №8), страница 2
Описание файла
Файл "отчет asm 8" внутри архива находится в папке "Готовая лаба №8". Документ из архива "Готовая лаба №8", который расположен в категории "". Всё это находится в предмете "системное программирование" из 4 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "системное программирование" в общих файлах.
Онлайн просмотр документа "отчет asm 8"
Текст 2 страницы из документа "отчет asm 8"
307 04B7 3C 61 SMAL: cmp al,'a'
308 04B9 72 B5 jb IN_LOOP
309 04BB 3C 66 cmp al,'f'
310 04BD 77 B1 ja IN_LOOP
311 04BF 2C 57 sub al,'a'-10 ;'b'-'a'+10=11
312 04C1 50 push ax
313 04C2 EB B4 jmp SHIFT
314 04C4 C3 EXIT: ret
315 04C5 Input_Near ENDP
316 ;-------------------------------------
317 ; печать двухбайтового слова
318 ;-------------------------------------
319 04C5 hexw PROC
320 04C5 52 push dx
321 04C6 8A D6 mov dl,dh
322 04C8 E8 0057 call hex
323 04CB 5A pop dx
324 04CC E8 0053 call hex
325 04CF C3 ret
326 04D0 hexw ENDP
327 ;--------------------------------------
328 ; Перевод в 10 сс
329 ;--------------------------------------
330 04D0 HEX2DEC PROC
331
332 04D0 8B C3 mov ax,BX ;число
333 04D2 BF 0000 mov di,0 ;счетчик цикла
334
335 04D5 HEX2DEC_LOOP:
336
337 04D5 BA 0000 mov dx,0 ;Старший байт делимого
338 04D8 2E: 8B 9D 0247r mov bx,coef[di] ;делитель
339
340 04DD F7 F3 div bx
341 ;dx:ax / bx = ax(dx)
342 ;ax - частное, dx - остаток
Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 7
lab8.asm
343
344 ;остаток в стек
345 04DF 52 push dx
346
347 ;вывод символа
348 04E0 05 0030 add ax,'0'
349 04E3 8A D0 mov dl,al
350 04E5 E8 0009 call PUTCH
351
352 ;в ax (младший байт делимого) помещается остаток
353 04E8 58 pop ax
354
355 04E9 47 inc di
356 04EA 47 inc di
357
358 04EB 83 FF 0A cmp di,10
359 04EE 72 E5 jb HEX2DEC_LOOP
360
361 04F0 C3 RET
362 04F1 HEX2DEC ENDP
363 ;-------------------------
364 ;Процедура вывода символа
365 ;-------------------------
366 04F1 PUTCH PROC
367 04F1 B4 02 mov ah,2
368 04F3 CD 21 int 21h
369 04F5 C3 ret
370 04F6 PUTCH ENDP
371 ;-------------------------
372 ;Процедура ввода символа
373 ;-------------------------
374 04F6 GETCH PROC
375 04F6 B4 01 mov ah,1
376 04F8 CD 21 int 21h
377 04FA C3 ret
378 04FB GETCH ENDP
379 ;-------------------------
380 ;Процедура ввода символа без эха
381 ;-------------------------
382 04FB GETCH_NE PROC
383 04FB B4 08 mov ah,8
384 04FD CD 21 int 21h
385 04FF C3 ret
386 0500 GETCH_NE ENDP
387 ;-------------------------
388 ;Завершение программы
389 ;-------------------------
390 0500 QUIT PROC
391 0500 B4 4C mov ah,4ch
392 0502 B0 00 mov al,00h
393 0504 CD 21 int 21h
394 0506 QUIT ENDP
395 ;-------------------------
396 ;Процедура переноса строки
397 ;-------------------------
398 0506 CLRF PROC
399 0506 B2 0A mov dl,10
Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 8
lab8.asm
400 0508 E8 FFE6 call PUTCH
401 050B B2 0D mov dl,13
402 050D E8 FFE1 call PUTCH
403 0510 C3 ret
404 0511 CLRF ENDP
405 ;----------------------------------------
406 ;Очистка экрана
407 ;----------------------------------------
408 0511 CLRSCR PROC
409 0511 B4 06 mov ah,06h
410 0513 B0 00 mov al,00h
411 0515 B7 07 mov bh,7
412 0517 B5 00 mov ch,0
413 0519 B1 00 mov cl,0
414 051B B6 18 mov dh,24
415 051D B2 4F mov dl,79
416 051F CD 10 int 10h
417 0521 C3 RET
418 0522 CLRSCR ENDP
419 ;----------------------------------------
420 ;Перевод в шестнадцатеричную СС
421 ;----------------------------------------
422 0522 HEX PROC
423 0522 BB 0103r mov bx,offset hex_tab ;таблица в bx
424 0525 B6 00 mov dh,00h
425 0527 D1 E2 D1 E2 D1 E2 D1+ shl dx,4
426 E2
427 052F 8A C6 mov al,dh
428 0531 D7 xlatb
429 0532 52 push dx
430 0533 8A D0 mov dl,al ;Вывод 1 цифры на экран
431 0535 E8 FFB9 call PUTCH
432 0538 5A pop dx
433 0539 B6 00 mov dh,00h
434 053B D1 E2 D1 E2 D1 E2 D1+ shl dx,4
435 E2
436 0543 8A C6 mov al,dh
437 0545 D7 xlatb
438 0546 8A D0 mov dl,al ;Вывод 2 цифры на экран
439 0548 E8 FFA6 call PUTCH
440 054B C3 ret
441 054C HEX ENDP
442 ;----------------------------------------
443 054C text ENDS
444 END BEGIN
Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 9
Symbol Table
Symbol Name Type Value
??DATE Text "17/05/14"
??FILENAME Text "lab8 "
??TIME Text "11:46:28"
??VERSION Number 030A
@CPU Text 0101H
@CURSEG Text TEXT
@FILENAME Text LAB8
@WORDSIZE Text 2
BEGIN Near TEXT:0100
BIG Near TEXT:04AA
BUF Byte TEXT:0132
BUF_LEN Number 00F0
CHECK Near TEXT:0490
CLRF Near TEXT:0506
CLRSCR Near TEXT:0511
COEF Word TEXT:0247
DUMP_IN Near TEXT:03E5
DUMP_IN_LOOP Near TEXT:03F6
DUMP_OUT Near TEXT:0403
DUMP_OUT_LOOP Near TEXT:0409
DUMP_SEG Word TEXT:0234
DUMP_SM Word TEXT:0232
EXIT Near TEXT:04C4
EXIT_FL Byte TEXT:0236
GETCH Near TEXT:04F6
GETCH_NE Near TEXT:04FB
HEX Near TEXT:0522
HEX2DEC Near TEXT:04D0
HEX2DEC_LOOP Near TEXT:04D5
HEXW Near TEXT:04C5
HEX_TAB Byte TEXT:0103
INPUT_NEAR Near TEXT:046A
INP_STR Byte TEXT:0237
IN_LOOP Near TEXT:0470
MAIN Near TEXT:0251
MAIN_EXIT Near TEXT:0294
MAIN_LOOP Near TEXT:0254
NUMBER Near TEXT:049D
OUT_STR Byte TEXT:0113
PRINT Near TEXT:0461
PUTCH Near TEXT:04F1
QUIT Near TEXT:0500
RBP Word TEXT:0222
RCS Word TEXT:0230
RDI Word TEXT:0224
RDS Word TEXT:022E
RES Word TEXT:022A
RSI Word TEXT:0226
RSP Word TEXT:0228
RSS Word TEXT:022C
SAVE_REG Near TEXT:02A4
SHIFT Near TEXT:0478
SMAL Near TEXT:04B7
STRINGS Number 000F
Turbo Assembler Version 3.1 17/05/14 11:46:28 Page 10
Symbol Table
STR_LEN Number 0010
STR_OUT Near TEXT:0411
STR_OUT_LOOP Near TEXT:0436
STR_OUT_LOOP2 Near TEXT:0454
WRITE_REG Near TEXT:02CD
Groups & Segments Bit Size Align Combine Class
TEXT 16 054C Para none CODE
4. Результаты работы программы