Логотип.
 Разделы сайта Cтатьи.
Сайт в разработке!

Статистика сайта.

Посещений за день: 50
Посещений за месяц: 414
Посещений за год: 27733


Баннеры.

DMconnect
Maksy's PWS


Статистика в картинках.

likes counter


  • Главная.
  • Новости.
  • Программы.
  • Файлы.
  • Контакты.
  • Чат "Пиво".
  • Статьи.
  • Ссылки.
  • Гостевая.
  • Конверсия числа со стека калькулятора в символьную строку.

     При использовании встроенного калькуля- тора результаты находятся на вершине каль- куляторного стека в интегральной форме. Для их печати существует подпрограмма Print_FP.Но она печатает стандартными сре- дствами, которые в настоящее время исполь- зуются редко. Обычно программа работает с собственной процедурой печати, например, 42 символа в строке. Ее можно связать с новым потоком. Но при этом необходимо до- вольно тесное общение с операционной сис- темой Спекки.Предпочтительней просто скон- вертировать это число в строку символов и распоряжаться ею по своему усмотрению. Но программа для такого преобразования будет довольно сложной и громоздкой. Проще вос- пользоваться имеющимися в ПЗУ.

     Первое, что приходит в голову - Print_ FP. Она печатает число с вершины стека калькулятора в текущий поток. Значит нужно подменить процедуру вывода символа на про- цедуру пересылки байта в память. Но слиш- ком уж громоздко. Однако Print_FP при сво- ей работе создает символьное представление числа, и лишь затем вызывает процедуру пе- чати. Буфер находится в рабочей области калькулятора по адресу #5CA1-#5CAA.Это две ячейки памяти калькулятора MEM3 и MEM4. Теперь достаточно просто в качестве проце- дуры вывода для потока поставить RET и вызвать Print_FP, чтобы считать строковое представление числа. Это уже проще, хотя все равно нужно возиться с каналами. Проще всего воспользоваться для этого функцией калькулятора STR$. Конвертер занимает 7 байт.

    
    	CONVERT RST     #28        ; вызов калькулятора
    	        DB      #2E,#38    ; Команды калькулятора:
    	                           ; STR$ преобразует число в стринг.
    	                           ; Теперь на стеке параметры этого
    	                           ; стринга. В DE-адрес, в BC-длина.
    	                           ; END_CALC - выход из калькулятора.
    	        CALL    #2BF1      ; Подпрограмма STK-FETCH переписы-
    	                           ; вает число со стека калькулятора
    	                           ; в регистры A,B,C,D,E. А так как
    	                           ; после операции STR$ в стеке нахо-
    	                           ; дятся параметры стринга, то они
    	                           ; переносятся в пары DE и BC.
    	        RET
    

     Вот и все. Осталось скопировать строку в более надежное место,чем рабочая область интерпретатора.

    >>

    BitByByte, 2000 г. (2025).