Доброго времени суток всем! Задание было таково: используя попеременно, если это возможно, или команду загрузки абсолютного адреса или OFFSET заполнить таблицу TablAdr так, чтоб каждый элемент представлял собой адрес соотвествующего элемента таблицы TablB. Я сделал так:
| Код | title lab2.8
sseg segment para stack 'stack' db 256 dup (?) sseg ends
Eseg segment para public 'ext' TablB db 10 dup (4 dup ('G')) TablAdr dd 40 dup ('H') Eseg ends
cseg segment para public 'code' assume cs:cseg, ss:sseg, es:Eseg
start proc far
mov bx,Eseg mov es,bx mov si, 0 mov cl, 20
loop8: mov dl, [TablB[si]] mov TablAdr[si], [dl] inc si mov bx, OFFSET TablB[si] mov TablAdr[si], [bx] inc si loop loop8
ret start endp
cseg ends end start
|
Но не компилится!
Выложу листинг:
| Код | Turbo Assembler Version 4.1 24/10/10 13:34:40 Page 1 lab28.asm lab2.8
1 2 0000 sseg segment para stack 'stack' 3 0000 0100*(??) db 256 dup (?) 4 0100 sseg ends 5 6 0000 Eseg segment para public 'ext' 7 0000 0A*(04*(47)) TablB db 10 dup (4 dup ('G')) 8 0028 28*(00000048) TablAdr dd 40 dup ('H') 9 00C8 Eseg ends 10 11 0000 cseg segment para public 'code' 12 assume cs:cseg, ss:sseg, es:Eseg 13 14 0000 start proc far 15 16 17 0000 BB 0000s mov bx,Eseg 18 0003 8E C3 mov es,bx 19 0005 BE 0000 mov si, 0 20 0008 B1 14 mov cl, 20 21 22 000A loop8: 23 000A 26: 8A 94 0000r mov dl, [TablB[si]] 24 000F 26: 89 94 0028r mov TablAdr[si], [dl] **Error** lab28.asm(25) Can't convert to pointer 25 0014 46 inc si 26 0015 26: 8B 9C 0000r mov bx, OFFSET TablB[si] 27 001A 26: 89 9C 0028r mov TablAdr[si], [bx] **Error** lab28.asm(28) Illegal memory reference 28 001F 46 inc si 29 0020 E2 E8 loop loop8 30 31 32 0022 CB ret 33 0023 start endp 34 35 0023 cseg ends 36 end start Turbo Assembler Version 4.1 24/10/10 13:34:40 Page 2 Symbol Table lab2.8
Symbol Name Type Value
??DATE Text "24/10/10" ??FILENAME Text "lab28 " ??TIME Text "13:34:40" ??VERSION Number 040A @CPU Text 0101H @CURSEG Text CSEG @FILENAME Text LAB28 @WORDSIZE Text 2 LOOP8 Near CSEG:000A START Far CSEG:0000 TABLADR Dword ESEG:0028 TABLB Byte ESEG:0000
Groups & Segments Bit Size Align Combine Class
CSEG 16 0023 Para Public CODE ESEG 16 00C8 Para Public EXT SSEG 16 0100 Para Stack STACK Turbo Assembler Version 4.1 24/10/10 13:34:40 Page 3 Error Summary lab2.8
**Error** lab28.asm(25) Can't convert to pointer **Error** lab28.asm(28) Illegal memory reference
|
Помогите исправить ошибки! Спасибо огромное! |