Я работал над проблемами, которые часто используют эту инструкцию. Чтобы сжать его до одной функции, я бы написал (используя синтаксис Pythoni c) как:
def sxt(x):
if x % 256 > 127: # if top bit of low byte is set
x |= 0xff00
else:
x &= 0x00ff
Это можно было бы написать более компактно и, возможно, более эффективно. Эта версия предназначена для того, чтобы быть наиболее интуитивно понятной для не-asm-natives.
Обратите также внимание, что функция предполагает, что вы передаете входные данные в виде двух байтовых слов, как работает инструкция sxt
, 0xhhhh
где h - шестнадцатеричный ди git, который вы можете сделать в Python.