Hola Mantixd.
Si no te comprendí mal, sería:
Código Delphi
[-]
const
REGS: array[1..31] of string = (
' AX',' BX',' CX',' DX',' AH',' AL',' BH',' BL',' BP',' CH',' CL',' CS',
' CX',' DH',' DL',' DI',' DS',' EAX',' EBP',' EBX',' ECX',' EDI',' EDX',
' EIP',' ES',' ESIFE',' GS',' IP',' SI',' SP',' SS');
procedure TForm1.Button1Click(Sender: TObject);
var
i, j: Integer;
begin
Memo2.Lines.Clear;
for i:= 0 to Memo1.Lines.Count-1 do
for j:= Low(REGS) to High(REGS) do
if AnsiPos(REGS[j], UpperCase(Memo1.Lines[i])) <> 0 then
Memo2.Lines.Add(REGS[j]+' -> '+Memo1.Lines[i]);
end;
Agregué un espacio detras de cada nombre de registro y segmento declarado en el arreglo constante, por que sólamente serán nombres de registros si estan precedidos de un espacio. Es decir, podrían estar seguidos de una coma (instrucción), punto y coma (comentario), de dos puntos (dirección relativa), ..., pero nunca por otra cosa que un espacio o sería otra cosa que los mnemónicos buscados.
Saludos .)