Можно ли использовать инструкцию 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
команды. Конечно, это требует отключения прерываний, но выигрыш - это скорость.