Сумма нечетных чисел массива двойных слов - Assembler

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

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

Здравствуйте! Если все элементы двойные слова, то сумма должна иметь другой тип что бы не выйти из диапазона типа?

Решение задачи: «Сумма нечетных чисел массива двойных слов»

textual
Листинг программы
  1. .model small
  2.  
  3. data segment
  4.     x1  dw 166Ah
  5.         dw 8A8h
  6.        
  7.         dw 0FD2Eh
  8.         dw 0B669h  
  9.        
  10.         dw 0A029h
  11.         dw 0F205h  
  12.        
  13.         dw 0E6A1h
  14.         dw 0B538h  
  15.        
  16.         dw 0A4B4h
  17.         dw 0F25h   
  18.        
  19.         dw 0F0AFh
  20.         dw 0F335h  
  21.        
  22.         dw 0001h
  23.         dw 8000h
  24.            
  25.     y1  dw 3 dup(0)
  26.  
  27.     x2  dw 445Ch
  28.         dw 0B5BFh
  29.        
  30.         dw 705Ch
  31.         dw 0E6A5h
  32.        
  33.         dw 02D2h
  34.         dw 4996h
  35.        
  36.         dw 6E0Fh
  37.         dw 0FE98h
  38.        
  39.         dw 0D665h
  40.         dw 779h
  41.        
  42.         dw 6EC3h
  43.         dw 0EC96h
  44.        
  45.     y2  dw 3 dup(0)
  46. data ends
  47.  
  48. stk segment stack
  49.     db 255 dup(?)
  50. stk ends
  51.  
  52. code segment
  53. assume cs:code,ds:data,ss:stk
  54. start:  
  55. mov ax,data
  56. mov ds,ax
  57.  
  58. lea ax,x1            
  59. push ax
  60. lea ax,y1
  61. push ax
  62. mov ax,7
  63. push ax
  64. call abc
  65.    
  66. lea ax,x2
  67. push ax
  68. lea ax,y2
  69. push ax
  70. mov ax,6
  71. push ax
  72. call abc
  73.  
  74. mov ah,4Ch
  75. mov al,00h
  76. int 21h
  77.  
  78. abc proc
  79.     push bp
  80.     mov bp,sp
  81.    
  82.     mov cx,[bp+4]        
  83.     mov di,[bp+6]        
  84.     mov si,[bp+8]      
  85.            
  86.     M1:
  87.     mov ax,[si]        
  88.     mov dx,[si+2]      
  89.     test dx,8000h    
  90.     jz m2            
  91.          
  92.     add [di],ax  
  93.     mov ax,[si+2]
  94.     cwd          
  95.     adc [di+2],ax
  96.     adc [di+4],dx
  97.    
  98.     M2:
  99.     add si,4
  100.     dec cx
  101.     jnz m1
  102.    
  103.     pop bp
  104.  
  105.     ret 6
  106. abc endp
  107. code ends
  108. end start

Объяснение кода листинга программы

Список элементов кода:

  1. Объявление сегментов данных и кода
  2. Объявление переменных
  3. Начало выполнения программы
  4. Вызов процедуры abc
  5. Передача в процедуру abc счетчика количества нечетных чисел и указатель на массив нечетных чисел
  6. Вложенные циклы для обработки каждого нечетного числа в массиве
  7. Тест на четность числа
  8. Если число четное, то переход к следующей итерации цикла
  9. Если число нечетное, то добавление его в сумму
  10. Передача в процедуру abc нового значения счетчика и указателя на массив нечетных чисел
  11. Продолжение выполнения программы
  12. Завершение программы

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

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

14   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы