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

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

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

Нужна помощь, так как сама не могу разобраться Есть код
.386
Tabl1 struc
    namex       db  7 dup(?)
    field1      db  ?
    field2      dw  ?
    field4      dd  ?
Tabl1 ends
 
data1 segment use16 
    I1      db      0
    A1      Tabl1   6 dup(<>)
    begin_code2_addr dd begin_code2
data1 ends
 
data2 segment use16 
    A2      Tabl1   11 dup(<>)
data2 ends
 
code1 segment use16 
    assume  cs:code1, ds:data1
begin:
    mov     ax, data1
    mov     ds, ax
 
    mov     cx, word ptr i1
    jmp     loop_end
    loop_begin:
        imul    si, cx, size Tabl1
        mov     word ptr A1[si].field2, si
        inc     cx
    loop_end:
        cmp     cx, 6
        jl      loop_begin
 
    jmp     begin_code2_addr
code1 ends
 
code2 segment use16 
    assume  cs:code2, ds:data2, es:data2
begin_code2:
    mov     ax, data1
    mov     ds, ax
    mov     ax, data2
    mov     es, ax
    
    mov     cx, size Tabl1 * 6
    lds     si, A1
    les     di, es:A2
    add     di, size Tabl1 * 2
    cld
    rep     movsb 
 
    mov     ax, 4c00h
    int     21h
code2 ends
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
Листинг программы
.386
Tabl1 struc
    namex       db  7 dup(?)
    field1      db  ?
    field2      dw  ?
    field4      dd  ?
Tabl1 ends
 
data1 segment use16 
    I1      db      0
    A1      Tabl1   6 dup(<>)
    begin_code2_addr dd begin_code2
data1 ends
 
data2 segment use16 
    A2      Tabl1   11 dup(<>)
data2 ends
 
code1 segment use16 
    assume  cs:code1, ds:data1
begin:
    mov     ax, data1
    mov     ds, ax
    xor      cx, cx
    mov     cl, i1
    jmp     loop_end
    loop_begin:
        imul    si, cx, size Tabl1
        lea      di,A1.field1
        mov     word ptr A1[si].field2, di
        inc     cx
    loop_end:
        cmp     cx, 6
        jl      loop_begin
 
    jmp     begin_code2_addr
code1 ends
 
code2 segment use16 
    assume  cs:code2, ds:data2, es:data2
begin_code2:
    mov     ax, data1
    mov     ds, ax
    mov     ax, data2
    mov     es, ax
    
    mov     cx, size Tabl1 * 6
    lea     si, A1
    lea     di, A2
    add     di, size Tabl1 * 2
    cld
    rep     movsb 
 
    mov     ax, 4c00h
    int     21h
code2 ends
end begin

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


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

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

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