такая мысль проскакивала.....:) но не задержалась.....
Вид для печати
Что то типа
Код:START:: MOV #DATA,R5
MOV #100500, R4 ; это типа стописоттыщ раз :)
10$: CALL PRDAT
DEC R4 ; или вместо этой и следующей инструкций SOB R4, 10$
BNE 10$
.EXIT
попробованы все варианты-работают
спасибо
добрый вечер
есть очень маленькая программка и ведёт она себя непонятно
ввод 3 символов, запись их в буфер, печать буфера, возврат на ожидание ввода.
так выглядит запущенной, 000-111-222-444-введённые символы, остальное печать их, первая и четвёртая печать правильная.Код HTML:.MCALL .TTYIN,.PRINT,.EXIT
TEST: .TTYIN BUFF1
.TTYIN BUFF1+1
.TTYIN BUFF1+2
.PRINT #BUFF1
BR TEST
.EXIT
BUFF1: .BLKB 3
.END TEST
Скрытый текст
Код HTML:.SET EDIT K52
.SET SL ON
.DAY
Время Дата
18:13:44 01-Окт-2017, Воскресенье
.R TST3
000
000
111
1
11
222
22
2
444
444
[свернуть]
окно дизассемблера, 1042 1043 1044-байты буфера. видно что в 1042 пишется 15 вместо 60 первый символ второго ввода, а вот почему непонятно.
Скрытый текст
Код:
Код HTML:
001000 [000004] EMT 340
; 000032:000000 -> PSW
; PSW :000004 -> 000776:001000
; PC :001002 -> 000774:136530
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 060 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; R0 : 060 -> 001043
001020 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001022 -> 000774:001012
; 000030:143446 -> PC
001022 [000000] BCS 001020
001024 [000000] MOVB R0, 001044 ; R0 : 060 -> 001044
001030 [000000] MOV #546., R0 ; 001032:001042 -> R0
001034 [000000] EMT 351
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001036 -> 000774:001022
; 000030:143446 -> PC
001036 [000000] BR 001000
001000 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001002 -> 000774:001036
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 015 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; [B]R0 : 012 -> 001043[/B]
001020 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001022 -> 000774:001012
; 000030:143446 -> PC
001022 [000000] BCS 001020
001024 [000000] MOVB R0, 001044 ; [B]R0 : 061 -> 001044[/B]
001030 [000000] MOV #546., R0 ; 001032:001042 -> R0
001034 [000000] EMT 351
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001036 -> 000774:001022
; 000030:143446 -> PC
001036 [000000] BR 001000
001000 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001002 -> 000774:001036
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 061 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; R0 : 061 -> 001043
001020 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001022 -> 000774:001012
; 000030:143446 -> PC
001022 [000000] BCS 001020
001024 [000000] MOVB R0, 001044 ; R0 : 015 -> 001044
001030 [000000] MOV #546., R0 ; 001032:001042 -> R0
001034 [000000] EMT 351
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001036 -> 000774:001022
; 000030:143446 -> PC
001036 [000000] BR 001000
001000 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001002 -> 000774:001036
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 012 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; R0 : 062 -> 001043
001020 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001022 -> 000774:001012
; 000030:143446 -> PC
001022 [000000] BCS 001020
001024 [000000] MOVB R0, 001044 ; R0 : 062 -> 001044
001030 [000000] MOV #546., R0 ; 001032:001042 -> R0
001034 [000000] EMT 351
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001036 -> 000774:001022
; 000030:143446 -> PC
001036 [000000] BR 001000
001000 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001002 -> 000774:001036
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 062 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; R0 : 015 -> 001043
001020 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001022 -> 000774:001012
; 000030:143446 -> PC
001022 [000000] BCS 001020
001024 [000000] MOVB R0, 001044 ; R0 : 012 -> 001044
001030 [000000] MOV #546., R0 ; 001032:001042 -> R0
001034 [000000] EMT 351
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001036 -> 000774:001022
; 000030:143446 -> PC
001036 [000000] BR 001000
001000 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001002 -> 000774:001036
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 064 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; R0 : 064 -> 001043
001020 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001022 -> 000774:001012
; 000030:143446 -> PC
001022 [000000] BCS 001020
001024 [000000] MOVB R0, 001044 ; R0 : 064 -> 001044
001030 [000000] MOV #546., R0 ; 001032:001042 -> R0
001034 [000000] EMT 351
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001036 -> 000774:001022
; 000030:143446 -> PC
001036 [000000] BR 001000
001000 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001002 -> 000774:001036
; 000030:143446 -> PC
001002 [000000] BCS 001000
001004 [000000] MOVB R0, 001042 ; R0 : 015 -> 001042
001010 [000000] EMT 340
; 000032:000000 -> PSW
; PSW :000000 -> 000776:000000
; PC :001012 -> 000774:001002
; 000030:143446 -> PC
001012 [000000] BCS 001010
001014 [000000] MOVB R0, 001043 ; R0 : 012 -> 001043
001020 [000000] EMT 340
[свернуть]
По умолчанию посимвольный ввод отключен, а эхо символов включено. Чтобы получить то, что хочется нужно установить биты TTSPC$ (10000) и TCBIT$ (100) в слове $JSW (44), например так:- - - Добавлено - - -Код:.ASECT
.=44
.WORD 10100
.PSECT
TEST: ...
Непонятно зачем .EXIT если до него дело не дойдет никогда, а так же буфер не годится для .PRINT - не зарезервировано место для завершающего нуля, и в теории строка может оказаться очень длинной (хотя в данном конкретном случае выравнивание автоматически зарезервирует этот байт) :)
спасибо
эхо появилось и ошибки вывода тоже.
Лучшая книга (на мой взгляд - может потому что первая была) по ассемблеру PDP-11, там в том числе вроде нюансы .TTYIN/.TTYOUT разбираются.
- - - Добавлено - - -
Ну так в программе получается и эхо символов работает и потом вывод символов делается еще раз :)
спасибо. видел ваше упоминание о книге раньше:)
скачал, листаю, книга написана в повествовательной форме поэтому человеком понимается лучше(начинающим) чем сухие справочники
- - - Добавлено - - -
в общем понятно, а вот в частности.....
эхо печатается чтоб видно было что печатаем, логично? а буфер куда я сложил напечатанное портится-непонятно:)(может буфер кривой??? по другому нужно делать наверно) печать я использовал для проверки буфера на предмет правильности заноса туда символов, а так по задумке буфер с символами будет использоваться для перехода к подпрограммам