Из элементов целочисленного вектора С ( п) , п < 12 кратных заданному целому числу Т , сформировать вектор В - Assembler

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

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

Обеспечить обработку данных массивов в виде отдельной процедуры. Возникает ошыбка при перезписи в другой масив . пожалуста помогите доделать.
Листинг программы
  1. .MODEL small
  2. .STACK 256
  3. .data
  4. array dw 12 dup (?)
  5. array2 dw 12 dup (?)
  6. t db 3
  7. .code
  8. .486
  9. main:
  10. ProgramStart PROC NEAR
  11. mov ax,@data
  12. mov ds,ax
  13. mov es,ax
  14. mov cx,12
  15. lea di, array
  16. cld
  17. go:
  18. mov al, cl
  19. stosb
  20. loop go
  21. mov cx,12
  22. lea si, array
  23. mov ah,02h
  24. show:
  25. lodsb
  26. mov dl, al
  27. add dl,30h
  28. int 21h
  29. loop show
  30. mov si,1
  31. mov esi,0
  32. mov ax,array[esi*2]
  33. perevirka:
  34. div t
  35. cmp ah, 0
  36. inc esi
  37. cmp esi, 12
  38. je zeror
  39. jnz masb
  40. masb:
  41. mov bx, array[esi*2]
  42. mov array2[si*2],bx
  43. inc si
  44. cmp esi, 12
  45. je zeror
  46. jnz perevirka
  47. zeror:
  48.  
  49. sho:
  50. mov bx,OFFSET array2
  51. call PrintSg
  52. ;lea dx,array2
  53. ; mov ah,09h
  54. ; int 21h
  55. ;
  56. ; mov cx,12
  57. ; mov si,0
  58. exit:
  59. mov ax,4c00h
  60. int 21h
  61. ProgramStart ENDP
  62. PrintSg PROC NEAR
  63. mov dx,[bx]
  64. mov ah,09h
  65. int 21h
  66. mov cx,12
  67. mov si,0
  68. ret
  69. PrintSg ENDP
  70. end main

Решение задачи: «Из элементов целочисленного вектора С ( п) , п < 12 кратных заданному целому числу Т , сформировать вектор В»

textual
Листинг программы
  1. org 100h
  2. jmp start
  3.  
  4. mess0   db  13,10,'Vector(C): $'
  5. mess1   db  13,10,'Vector(B): $'
  6. vectC   db  1,0,6,3,9,5,2,7,8,9,3,6
  7. len     =   $ - vectC     ; длина источника
  8. vectB   db  12 dup('$')   ; приёмник маркером fn.9)
  9. divT    db  3             ; делитель
  10.  
  11. start:
  12.    mov   dx,mess0         ; параметр
  13.    call  MESSAGE          ;
  14.    mov   si,vectC         ; параметр
  15.    call  PRINT            ;
  16. ;=====================================
  17.    mov   si,vectC         ; параметры
  18.    mov   di,vectB         ; ^^
  19.    call  MOD_PROG         ;
  20. ;=====================================
  21.    mov   dx,mess1         ;
  22.    call  MESSAGE          ;
  23.    mov   dx,vectB         ;
  24.    call  MESSAGE          ;
  25.  
  26. exit:                     ;
  27.    xor   ax,ax            ;
  28.    int   16h              ;
  29.    int   20h              ; выход!
  30.  
  31. ;ннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннннн
  32. MESSAGE:                 ;
  33.    mov   ah,9            ;
  34.    int   21h             ;
  35. RET                      ;
  36. ;-------------------------------------------------------------------
  37. ; Процедура переводит числа 0-9 в символы
  38. ; и выводит их на экран. На входе: SI - буфер с числами
  39. PRINT:                   ;
  40.    mov   cx,len          ;
  41. @@:                      ;
  42.    lodsb                 ;
  43.    or    al,30h          ; перевод числа в символ
  44.    int   29h             ;
  45.    loop  @b              ;
  46. RET                      ;
  47. ;-------------------------------------------------------------------
  48. ; Процедура вычисляет MOD числа
  49. ; На входе: SI - источник, DI - приёмник
  50. MOD_PROG:                ;
  51.    mov   cx,len          ; длина массива
  52.    mov   bl,[divT]       ; делитель
  53. @@:                      ;
  54.    lodsb                 ; берём число..
  55.    cmp   al,bl           ; если оно меньше делителя,
  56.    jb    next            ;    ..то пропускаем его
  57.    mov   bh,al           ; иначе: запоминаем
  58.    xor   ah,ah           ; взводим флаг ZERO
  59.    div   bl              ; вычисляем остаток
  60.    or    ah,ah           ; проверка на нуль
  61.    jnz   next            ; пропускаем, если есть остаток
  62.    mov   al,bh           ; иначе: возвращаем число в AL
  63.    or    al,30h          ; переводим его в символ,
  64.    stosb                 ;    ..и сохраняем в приёмнике
  65. next:                    ;
  66.    loop  @b              ; мотаем цикл СХ-раз..
  67. RET                      ;

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


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

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

8   голосов , оценка 4.5 из 5

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

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

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