Можно ли использовать инструкцию XTHL в микропроцессоре 8085?

Я понимаю, что делает XTHL, но может ли кто-нибудь привести пример сценария, в котором он действительно будет использоваться? Кроме того, если возможно, пожалуйста, поделитесь кодом для приложения.

1 ответ

Решение

Одно использование включает передачу аргументов в ассемблерные функции, например:

    CALL function_name
    DB   1,2,3 ;arguments
...
function_name:
    XTHL
    MOV A,M ;get argument
    INX H ;move to next argument
    ...
    XTHL ;now return modified return address to stack,
         ;also restoring HL contents as well

Другое использование - иметь теневую копию HL сверху стека, например:

    DAD   B ;hl=hl+bc
    XTHL  ;'shadow' hl swapped in
    JNC   no_inc
    INX   H
no_inc:
    DAD   D ;hl=hl+de
    XTHL
    ;so we just added 32-bit number in DE:BC to HL:(TOS)

Подобным образом вы манипулируете словами, которые помещаются в стек.

Некоторые злоупотребления также включают это:

    LXI SP,addr1
    XTHL
    LXI SP,addr2
    XTHL
    ...

этот код будет перемещать цепочку слов данных через места, указанные последовательными LXI SP,addr команды. Конечно, это требует отключения прерываний, но выигрыш - это скорость.

Другие вопросы по тегам