Цитата Сообщение от Andrew771 Посмотреть сообщение
Вот такая у меня в Эйфории пашет безотказно:
Тоже врёт.
Или я что-то не так делаю?
Код:
	DEVICE ZXSPECTRUM128
STARTFORSNA EQU #8C22
	ORG STARTFORSNA
	LD SP,#5C00

	LD DE,1234
	LD BC,5678
	CALL div	; должно быть #37A2
	JR $
	
; Andrew771
; функция 16-разрядного беззнакового деления
; (C) Aleksey Malov aka Vivid
;     little optimized by Vitaly Vidmirov
; hl = de/bc  de = de%bc  ~840 takts.
; hl = 65535, de = de(dividend) if bc(divisor) == 0.
div	ld hl,65535
	ld a,b
	or c
	ret z	; если bс=0


       xor a     ;меняем знак
       sub c     ; у делителя
       ld c, a 
       sbc a, b 
       sub c 
       ld b, a 
       ld hl,0   ;обнулили новое делимое
       ld a,d    ;сначала двигаем
       rla       ;старший байт делимого
                 ;t=18
  ;  REPEAT 8
       rl l      ;
       add hl,bc ;
       jr c,$+4  ;8 раз
       sbc hl,bc ;
       rla       ; t=8*45=360
           rl l 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
         rl l 
         add hl,bc 
         jr c,$+4
         sbc hl,bc 
         rla 
           rl l 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
         rl l 
         add hl,bc 
         jr c,$+4
         sbc hl,bc 
         rla 
           rl l 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
         rl l 
         add hl,bc 
         jr c,$+4
         sbc hl,bc 
         rla 
           rl l 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
  ; ENDR 

       ld d,a    ;ст. байт результата
       ld a,e    ;теперь двигаем
       rla       ;младший байт  t=12

  ; REPEAT 8
       adc hl,hl ;
       add hl,bc ;
       jr c,$+4  ;8 раз
       sbc hl,bc ;
       rla       ; t=8*52=416
           adc hl,hl 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
         adc hl,hl 
         add hl,bc 
         jr c,$+4
         sbc hl,bc 
         rla 
           adc hl,hl 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
         adc hl,hl 
         add hl,bc 
         jr c,$+4
         sbc hl,bc 
         rla 
           adc hl,hl 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
         adc hl,hl 
         add hl,bc 
         jr c,$+4
         sbc hl,bc 
         rla 
           adc hl,hl 
           add hl,bc 
           jr c,$+4
           sbc hl,bc 
           rla 
  ; ENDR 

       ld e,a    ;мл. байт результата
                 ;hl-остаток от деления
                 ;t=4
       ex de, hl 
       ret


; GM BIT
; HL/DE=BC,HL-ОСТАТОК
DIVW    LD A,E:OR D
        RET Z
        XOR A
        LD C,A,B,A
        EX DE,HL
DIVW1   INC B
        BIT 7,H
        JR NZ,DIVW2
        ADD HL,HL
        JP DIVW1
DIVW2   EX DE,HL
DIVW3   OR A
        SBC HL,DE
        JR NC,DIVW4
        ADD HL,DE
DIVW4   CCF
        RL C:RL A
        RR D,E
        DJNZ DIVW3
        LD B,A
        RET

	SAVESNA "test.sna",STARTFORSNA