Всем привет.
Покритикуйте мою реализацию функций ABS и SGN для байта и слова, может можно как-то оптимизировать.
Байтовый аргумент поступает в регистре L, результат возвращается в нём же. Слова - в паре HL. Таковы соглашения модели вызова __z88dk_fastcall.
Код:/*--------------------------------- Cut here ---------------------------------*/ signed char Basic_ABS (signed char x) __z88dk_fastcall { __asm BIT 7,L RET Z XOR A SUB L LD L,A __endasm; } //Basic_ABS /*--------------------------------- Cut here ---------------------------------*/ signed int Basic_ABSI (signed int x) __z88dk_fastcall { __asm BIT 7,H RET Z EX DE,HL XOR A LD L,A LD H,A SBC HL,DE __endasm; } //Basic_ABSI /*--------------------------------- Cut here ---------------------------------*/ signed char Basic_SGN (signed char x) __z88dk_fastcall { __asm LD A,L OR L RET Z BIT 7,L LD L,#0xFF RET NZ LD L,#1 __endasm; } //Basic_SGN /*--------------------------------- Cut here ---------------------------------*/ signed char Basic_SGNI (signed int x) __z88dk_fastcall { __asm LD A,H OR L RET Z BIT 7,H LD L,#0xFF RET NZ LD L,#1 __endasm; } //Basic_SGNI




Ответить с цитированием
Размещение рекламы на форуме способствует его дальнейшему развитию 
