Программирование обработки, преобразования и ввода-вывода данных на ассемблере ПЭВМ. Домнин Л.Н. - 32 стр.

UptoLike

Составители: 

31
Продолжение прил.
Turbo Assembler Version 2.5 05/15/95 11:18:15 Page 1
ascbin.ASM
1 extrn des:word
2 public ascbin
3 ;-------------------------------------------------------------;
4 0000 cseg segment para public 'code' ;
5 0000 ascbin proc far ; с ;
6 assume cs:cseg ; ;
7 0000 53 push bx ; Сохранение содержимого ; е ;
8 0001 51 push cx ; рабочих регистров ; ;
9 0002 56 push si ; ; г ;
10 0003 B8 0000 mov ax,0 ; ; ;
11 0006 BB 0000 mov bx,0 ; Подготовка цикла ; м ;
12 0009 B9 0003 mov cx,3 ; ; ;
13 000C povt1: ; е ;
14 000C F7 2E 0000e imul des ; ax:=ax*10 ; ;
15 0010 46 inc si ; Формирование в bl ; н ;
16 0011 8A 1C mov bl,[si] ; двоичного эквивалента ; ;
17 0013 80 E3 0F and bl,0fh ; i-го разряда числа ; т ;
18 0016 03 C3 add ax,bx ; ax:=ax+bl(bh содерж.0) ; ;
19 0018 E2 F2 loop povt1 ; ; ;
20 001A 5E pop si ; Восстановление si ; ;
21 001B 80 3C 2B cmp byte ptr [si],'+' ; формирование ; ;
22 001E 74 02 je pos ; знака двоичного ; к ;
23 0020 F7 D8 neg ax ; эквивалента числа ; ;
24 0022 pos: ; о ;
25 0022 59 pop cx ; Восстановление содержимого ; ;
26 0023 5B pop bx ; рабочих регистров ; д ;
27 0024 CB ret ; Возврат
в вызывающую программу ; ;
28 0025 ascbin endp ; а ;
29 ;------------------------------------------------------- ;
30 0025 cseg ends ;
31 ;-------------------------------------------------------------;
32 en
d
                                                                         Продолжение прил.
Turbo Assembler      Version 2.5   05/15/95 11:18:15    Page 1
ascbin.ASM



     1                                      extrn    des:word
     2                                      public   ascbin
     3                             ;-------------------------------------------------------------;
     4   0000                      cseg     segment para public 'code'                           ;
     5   0000                      ascbin   proc     far                                   ; с ;
     6                                      assume   cs:cseg                               ;     ;
     7   0000   53                          push     bx          ; Сохранение содержимого ; е ;
     8   0001   51                          push     cx          ; рабочих регистров       ;     ;
     9   0002   56                          push     si          ;                         ; г ;
    10   0003   B8 0000                     mov      ax,0        ;                         ;     ;
    11   0006   BB 0000                     mov      bx,0        ; Подготовка цикла        ; м ;
    12   0009   B9 0003                     mov      cx,3        ;                         ;     ;
    13   000C                      povt1:                                                  ; е ;
    14   000C   F7   2E 0000e               imul     des         ; ax:=ax*10               ;     ;
    15   0010   46                          inc      si      ; Формирование в bl           ; н ;
    16   0011   8A   1C                     mov      bl,[si] ; двоичного эквивалента       ;     ;
    17   0013   80   E3 0F                  and      bl,0fh ; i-го разряда числа           ; т ;
    18   0016   03   C3                     add      ax,bx       ; ax:=ax+bl(bh содерж.0) ;      ;
    19   0018   E2   F2                     loop     povt1       ;                         ;     ;
    20   001A   5E                          pop      si          ; Восстановление si       ;     ;
    21   001B   80   3C 2B                  cmp      byte ptr [si],'+' ; формирование      ;     ;
    22   001E   74   02                     je       pos               ; знака двоичного   ; к ;
    23   0020   F7   D8                     neg      ax                ; эквивалента числа ;     ;
    24   0022                      pos:                                                    ; о ;
    25   0022   59                          pop      cx   ; Восстановление содержимого     ;     ;
    26   0023   5B                          pop      bx   ; рабочих регистров              ; д ;
    27   0024   CB                          ret           ; Возврат в вызывающую программу ;     ;
    28   0025                      ascbin   endp                                           ; а ;
    29                             ;-------------------------------------------------------      ;
    30   0025                      cseg     ends                                                 ;
    31                             ;-------------------------------------------------------------;
    32                                      end




                                               31