Структуры в ассемблере - 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
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д