dseg at 0x10 stack: ds 6 ; пример int/100=int/10/10 cseg at 0 ;ввод дробного ;преобразование в целое двоичное в масштабе 100*256 mov sp,#stack-1 mov a,P1 ; anl a,#0f0h ;a=0.25-> 25=0x19 swap a mov b,#10 mul ab mov b,a mov a,P1 anl a,#0fh add a,b mov r2,#0 ; a.r0=0x1900 ;преобразование в дробное в масштабе 256 call div10 ;0x1900/10 = 0x280 call div10 ;0x280/10=0x40 (0.25)2 nop div10: ;int/10 -"школьный алгоритм" call digit call digit call digit pop acc ;a3 swap a mov r0,a pop P2 ;a2 pop acc swap a orl a,P2 ;a1a2 mov p3,a ret digit: ; ai цифра двоичной дроби a.r0 pop 02 ; РС из стека ' r2,r3 pop 03 mov b,#10 div ab push acc ;a1,a2.a3 mov a,r0 ; anl a,#0xf0 swap a ;0x0z mov r1,a mov a,b ;0x5 rest swap a ;0x50 orl a,r1 ;0x5z push acc mov a,r0 ;r0=zv anl a,#0xf ;0v swap a ;v0 mov r0,a pop acc ;(rest.z).(r0=v0) push 03 ;восстановление PC 'стек push 02 ret end