PDA

View Full Version : [Assembly 8086] scrivere un byte in memoria invece di una word


xblitz
31-01-2008, 20:39
Ciao a tutti ho il seguente problema:
ho un vettore in memoria che devo scansionare alla ricerca di occorrenze e, dove ne trovo, devo sovrascrivere la cella del vettore con un carattere. Il mio problema è proprio qui: facendo un dump della memoria mi sono accorto che oltre al carattere selezionato viene sovrascritto anche il successivo. L'istruzione incriminata è la seguente:

mov [BX+DI],'*' ;si marca la lettera

nel debugger BX+DI è un word ptr (immagino significhi puntatore a word)

Inoltre il fase di assemblaggio TASM mi restituisce proprio a questo rigo il seguente warning:

*Warning* occ.asm(134) Argument needs type override

cosa mi invento? :confused:
grazie per l'aiuto

variabilepippo
31-01-2008, 20:52
Se non ricordo male la sintassi TASM prevede questa possibilità:

mov [byte BX+DI],1

xblitz
31-01-2008, 20:59
grazie per l'aiuto

credo però che la sintassi sia sbagliata, infatti oltre al warning di prima appare il seguente errore


**Error** occ.asm(134) Need right square bracket


adesso andrò a vedere se trovo qualcosa in internet...

grazie ancora!

variabilepippo
31-01-2008, 21:05
Solitamente si adotta la sintassi mov byte [registro], 1

Però mi sembrava di ricordare che il buon vecchio TASM richiedesse il byte all'interno delle parentesi quadre.

xblitz
31-01-2008, 21:07
trovata la sintassi corretta!!!

mov byte ptr [BX+DI],'*'

grazie ancora per l'aiuto!

cionci
01-02-2008, 10:52
Prova anche con

movb [BX+DI],'*'

xblitz
01-02-2008, 17:05
no mi spiace questa non funziona: secondo tasm è un'istruzione illegale

gheg
02-02-2008, 15:07
il mio assembly è di gran lunga arrugginito, ma sei sicuro che con quell'indirizzamento (sulla destinazione) sia possibile passare un immediato?

edit. sì, si può. mi ritiro in buon ordine