Структуры в ассемблере - Assembler (223516)
Формулировка задачи:
Нужна помощь, так как сама не могу разобраться
Есть код
Но он успешно не компилируется, и появляются ворнинги:
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
Как можно их исправить?
Листинг программы
- .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
Решение задачи: «Структуры в ассемблере»
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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д