Узнать максимальный и минимальный размер двоично-десятичного числа - Assembler

Узнай цену своей работы

Формулировка задачи:

Всем привет. В общем, тут такое дело. Нужно узнать максимальный и минимальный размер двоично-десятичного числа(точнее, двоично-десятичных чисел). Если можно, объясните, почему. Заранее спасибо Минимальный размер 1 байт, это я понял, если что

Решение задачи: «Узнать максимальный и минимальный размер двоично-десятичного числа»

textual
Листинг программы
Turbo Assembler  Version 3.1        08/01/14 11:47:50       Page 1
9.asm
 
 
 
      1 0000                 model   small
      2 0000                 stack   6h
      3 0000                 .data
      4 0000  10*(00)                b           db      16 dup (0)
      5 0010  10*(00)                c           db      16 dup (0)
      6 0020  11*(00)                sum         db      17 dup (0)
      7 0031  0000               len_b       dw      0
      8 0033  0000               len_c       dw      0
      9 0035  0000               len_sum         dw        0
     10 0037                 .code
     11 0000                 main:
     12 0000  B8 0000s               mov     ax,@data
     13 0003  8E D8              mov     ds,ax
     14 0005  BE 0000                mov     si,0
     15                  ;-------------------определение длины чисел------------
     16 0008                 cicle:
     17 0008  26: 8A BC 0081             mov     bh,es:[0081h]+[si]
     18 000D  80 FF 20               cmp     bh,20h
     19 0010  75 03              jne     num1_len
     20 0012  46                 inc     si
     21 0013  EB F3              jmp     cicle
     22 0015                 num1_len:
     23 0015  26: 8A AC 0081             mov     ch,es:[0081h]+[si]
     24 001A  46                 inc     si
     25 001B  80 FD 20               cmp     ch,20h
     26 001E  74 06              je      num2_len
     27 0020  FF 06 0031r            inc     len_b
     28 0024  EB EF              jmp     num1_len
     29 0026                 num2_len:
     30 0026  26: 8A AC 0081             mov     ch,es:[0081h]+[si]
     31 002B  46                 inc     si
     32 002C  80 FD 0D               cmp     ch,0Dh
     33 002F  74 06              je      correct_length
     34 0031  FF 06 0033r            inc     len_c
     35 0035  EB EF              jmp     num2_len
     36                  ;----------корректировка длин чисел и длины суммы-------
     37 0037                 correct_length:
     38 0037  33 F6              xor     si,si
     39 0039  8B 16 0031r            mov     dx,len_b
     40 003D  3B 16 0033r            cmp     dx,len_c
     41 0041  77 12              ja      def_length_sum
     42 0043  A1 0033r               mov     ax,len_c
     43 0046  40                 inc     ax
     44 0047  A3 0035r               mov     len_sum,ax
     45 004A  FF 0E 0031r            dec     len_b
     46 004E  FF 0E 0033r            dec     len_c
     47 0052  EB 10 90               jmp     cycl
     48 0055                 def_length_sum:
     49 0055  A1 0031r               mov     ax,len_b
     50 0058  40                 inc     ax
     51 0059  A3 0035r               mov     len_sum,ax
     52 005C  FF 0E 0031r            dec     len_b
     53 0060  FF 0E 0033r            dec     len_c
     54                  ;--------------------работа с PSP----------------------
     55 0064                 cycl:
     56 0064  26: 8A BC 0081             mov     bh,es:[0081h]+[si]
     57 0069  80 FF 20               cmp     bh,20h
Turbo Assembler     Version 3.1        08/01/14 11:47:50       Page 2
9.asm
 
 
 
     58 006C  75 03              jne     correct_first
     59 006E  46                 inc     si
     60 006F  EB F3              jmp     cycl
     61 0071                 correct_first:
     62 0071  8B 1E 0031r            mov     bx,len_b
     63 0075  EB 01 90               jmp     first
     64 0078                 first:
     65 0078  26: 8A AC 0081             mov     ch,es:[0081h]+[si]
     66 007D  46                 inc     si
     67 007E  88 AF 0000r            mov     b[bx],ch
     68 0082  83 FB 00               cmp     bx,0
     69 0085  74 03              je      correct_second
     70 0087  4B                 dec     bx
     71 0088  EB EE              jmp     first
     72 008A                 correct_second:
     73 008A  8B 1E 0033r            mov     bx,len_c
     74 008E  46                 inc     si
     75 008F  EB 01 90               jmp     second
     76 0092                 second:
     77 0092  26: 8A AC 0081             mov     ch,es:[0081h]+[si]
     78 0097  46                 inc     si
     79 0098  88 AF 0010r            mov     c[bx],ch
     80 009C  83 FB 00               cmp     bx,0
     81 009F  74 03              je      ascii_1
     82 00A1  4B                 dec     bx
     83 00A2  EB EE              jmp     second
     84                  ;--------------------перевод в BCD - формат-------------
     85 00A4                 ascii_1:
     86 00A4  8B 36 0031r            mov     si,len_b
     87 00A8                 ascii_num1:
     88 00A8  8A BC 0000r            mov     bh,b[si]
     89 00AC  80 EF 30               sub     bh,30h
     90 00AF  88 BC 0000r            mov     b[si],bh
     91 00B3  83 FE 00               cmp     si,0
     92 00B6  74 03              je      ascii_2
     93 00B8  4E                 dec     si
     94 00B9  EB ED              jmp     ascii_num1
     95 00BB                 ascii_2:
     96 00BB  8B 36 0033r            mov     si,len_c
     97 00BF                 ascii_num2:
     98 00BF  8A BC 0010r            mov     bh,c[si]
     99 00C3  80 EF 30               sub     bh,30h
    100 00C6  88 BC 0010r            mov     c[si],bh
    101 00CA  83 FE 00               cmp     si,0
    102 00CD  74 03              je      adding
    103 00CF  4E                 dec     si
    104 00D0  EB ED              jmp     ascii_num2
    105                  ;------------------сложение---------------------------
    106 00D2                 adding:
    107 00D2  33 DB              xor      bx,bx
    108 00D4  8B 0E 0035r            mov      cx,len_sum
    109 00D8                 m:
    110 00D8  8A 87 0000r            mov      al,b[bx]
    111 00DC  12 87 0010r            adc      al,c[bx]
    112 00E0  37                 aaa
    113 00E1  88 87 0020r            mov      sum[bx],al
    114 00E5  43                 inc      bx
Turbo Assembler     Version 3.1        08/01/14 11:47:50       Page 3
9.asm
 
 
 
    115 00E6  E2 F0              loop     m
    116 00E8  80 97 0020r 00             adc      sum[bx],0
    117                  ;--------------перевод в  ASCII вывод на экран------------
    118 00ED  FF 0E 0035r            dec      len_sum
    119 00F1  33 F6              xor      si,si
    120 00F3  8B 36 0035r            mov      si,len_sum
    121 00F7  B4 02              mov      ah,02h
    122
    123 00F9  8A 94 0020r            mov      dl,sum[si]
    124 00FD  80 FA 00               cmp      dl,0
    125 0100  74 03              je       cors
    126 0102  EB 02 90               jmp      print
    127 0105                 cors:
    128 0105  4E                 dec      si
    129 0106                 print:
    130 0106  8A 94 0020r            mov      dl,sum[si]
    131 010A  80 C2 30               add      dl,30h
    132 010D  88 94 0020r            mov      sum[si],dl
    133 0111  CD 21              int      21h
    134 0113  83 FE 00               cmp      si,0
    135 0116  74 03              je       exit
    136 0118  4E                 dec      si
    137 0119  EB EB              jmp      print
    138 011B                 exit:
    139 011B  B8 4C00                mov     ax,4c00h
    140 011E  CD 21              int     21h
    141                  end main
Turbo Assembler     Version 3.1        08/01/14 11:47:50       Page 4
Symbol Table
 
 
 
 
Symbol Name     Type   Value               Cref (defined at #)
 
??DATE          Text   "08/01/14"
??FILENAME      Text   "9   "
??TIME          Text   "11:47:50"
??VERSION       Number 030A
@32BIT          Text   0               #1
@CODE           Text   _TEXT               #1  #1  #10
@CODESIZE       Text   0               #1
@CPU            Text   0101H
@CURSEG         Text   _TEXT               #3  #10
@DATA           Text   DGROUP              #1  12
@DATASIZE       Text   0               #1
@FILENAME       Text   9
@INTERFACE      Text   00H             #1
@MODEL          Text   2               #1
@STACK          Text   DGROUP              #1
@WORDSIZE       Text   2               #3  #10
ADDING          Near   _TEXT:00D2          102  #106
ASCII_1         Near   _TEXT:00A4          81  #85
ASCII_2         Near   _TEXT:00BB          92  #95
ASCII_NUM1      Near   _TEXT:00A8          #87  94
ASCII_NUM2      Near   _TEXT:00BF          #97  104
B           Byte   DGROUP:0000         #4  67  88  90  110
C           Byte   DGROUP:0010         #5  79  98  100  111
CICLE           Near   _TEXT:0008          #16  21
CORRECT_FIRST       Near   _TEXT:0071          58  #61
CORRECT_LENGTH      Near   _TEXT:0037          33  #37
CORRECT_SECOND      Near   _TEXT:008A          69  #72
CORS            Near   _TEXT:0105          125  #127
CYCL            Near   _TEXT:0064          47  #55  60
DEF_LENGTH_SUM      Near   _TEXT:0055          41  #48
EXIT            Near   _TEXT:011B          135  #138
FIRST           Near   _TEXT:0078          63  #64  71
LEN_B           Word   DGROUP:0031         #7  27  39  45  49  52  62  86
LEN_C           Word   DGROUP:0033         #8  34  40  42  46  53  73  96
LEN_SUM         Word   DGROUP:0035         #9  44  51  108  118  120
M           Near   _TEXT:00D8          #109  115
MAIN            Near   _TEXT:0000          #11  141
NUM1_LEN        Near   _TEXT:0015          19  #22  28
NUM2_LEN        Near   _TEXT:0026          26  #29  35
PRINT           Near   _TEXT:0106          126  #129  137
SECOND          Near   _TEXT:0092          75  #76  83
SUM         Byte   DGROUP:0020         #6  113  116  123  130  132
 
Groups & Segments   Bit Size Align  Combine Class      Cref (defined at #)
 
DGROUP          Group                  #1  1  12
  STACK         16  0006 Para   Stack   STACK      #2
  _DATA         16  0037 Word   Public  DATA       #1  #3
_TEXT           16  0120 Word   Public  CODE       #1  1  #10  10

Оцени полезность:

11   голосов , оценка 4.091 из 5
Похожие ответы