Структуры в ассемблере - Assembler (223516)

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

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

Нужна помощь, так как сама не могу разобраться Есть код
Листинг программы
  1. .386
  2. Tabl1 struc
  3. namex db 7 dup(?)
  4. field1 db ?
  5. field2 dw ?
  6. field4 dd ?
  7. Tabl1 ends
  8. data1 segment use16
  9. I1 db 0
  10. A1 Tabl1 6 dup(<>)
  11. begin_code2_addr dd begin_code2
  12. data1 ends
  13. data2 segment use16
  14. A2 Tabl1 11 dup(<>)
  15. data2 ends
  16. code1 segment use16
  17. assume cs:code1, ds:data1
  18. begin:
  19. mov ax, data1
  20. mov ds, ax
  21. mov cx, word ptr i1
  22. jmp loop_end
  23. loop_begin:
  24. imul si, cx, size Tabl1
  25. mov word ptr A1[si].field2, si
  26. inc cx
  27. loop_end:
  28. cmp cx, 6
  29. jl loop_begin
  30. jmp begin_code2_addr
  31. code1 ends
  32. code2 segment use16
  33. assume cs:code2, ds:data2, es:data2
  34. begin_code2:
  35. mov ax, data1
  36. mov ds, ax
  37. mov ax, data2
  38. mov es, ax
  39. mov cx, size Tabl1 * 6
  40. lds si, A1
  41. les di, es:A2
  42. add di, size Tabl1 * 2
  43. cld
  44. rep movsb
  45. mov ax, 4c00h
  46. int 21h
  47. code2 ends
  48. end begin
Но он успешно не компилируется, и появляются ворнинги: 000A B9 0054 mov cx, size Tabl1 * 6 000D C5 36 0001 R lds si, A1 mlab3.asm(47): warning A4057: Illegal size for operand 0011 26: C4 3E 0000 R les di, es:A2 mlab3.asm(48): warning A4057: Illegal size for operand 0016 83 C7 1C add di, size Tabl1 * 2 0019 FC cld 001A F3/ A4 rep movsb Как можно их исправить?

Решение задачи: «Структуры в ассемблере»

textual
Листинг программы
  1. .386
  2. Tabl1 struc
  3.     namex       db  7 dup(?)
  4.     field1      db  ?
  5.     field2      dw  ?
  6.     field4      dd  ?
  7. Tabl1 ends
  8.  
  9. data1 segment use16
  10.     I1      db      0
  11.     A1      Tabl1   6 dup(<>)
  12.     begin_code2_addr dd begin_code2
  13. data1 ends
  14.  
  15. data2 segment use16
  16.     A2      Tabl1   11 dup(<>)
  17. data2 ends
  18.  
  19. code1 segment use16
  20.     assume  cs:code1, ds:data1
  21. begin:
  22.     mov     ax, data1
  23.     mov     ds, ax
  24.     xor      cx, cx
  25.     mov     cl, i1
  26.     jmp     loop_end
  27.     loop_begin:
  28.         imul    si, cx, size Tabl1
  29.         lea      di,A1.field1
  30.         mov     word ptr A1[si].field2, di
  31.         inc     cx
  32.     loop_end:
  33.         cmp     cx, 6
  34.         jl      loop_begin
  35.  
  36.     jmp     begin_code2_addr
  37. code1 ends
  38.  
  39. code2 segment use16
  40.     assume  cs:code2, ds:data2, es:data2
  41. begin_code2:
  42.     mov     ax, data1
  43.     mov     ds, ax
  44.     mov     ax, data2
  45.     mov     es, ax
  46.    
  47.     mov     cx, size Tabl1 * 6
  48.     lea     si, A1
  49.     lea     di, A2
  50.     add     di, size Tabl1 * 2
  51.     cld
  52.     rep     movsb
  53.  
  54.     mov     ax, 4c00h
  55.     int     21h
  56. code2 ends
  57. end begin

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


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

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

11   голосов , оценка 4.091 из 5

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

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

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