0
我有一個LC-3程序,它有一個計數器。我可以使用TRAP x21將計數器打印到屏幕上。但是,如果計數器號碼有兩位數,我的程序不起作用。LC-3如何打印兩位數字
例:9將完美打印,而不是19
我猜測之前打印我的註冊其中包含我需要一個循環,這將除以2斬數計數器(與我十進制除以10,而二進制)。然後我想我會打印digit1,digit0。我有一個問題,但我如何分配LC-3?右移?這對於這個問題來說似乎太難了,並且超出我的理解。
請幫忙。
0010 000 000000011 ; R0 <= x30 which is for
0001 000 000 0 00 010 ; R0 <= R0 + R2
1111 0000 00100001 ; TRAP x21
1111 0000 00100101 ; TRAP x25
0000000000110000
如果你正在生成十進制輸出,那麼你需要除以10,而不是2.除非10例程將是非常痛苦的考慮到LC-3的非常有限的指令集。櫃檯有多大? (例如,是否總是小於20?小於100?) –
如果計數器值的範圍不是非常有限,我想我會建議使用以下結構編寫代碼。 16位值不能超過5位十進制數字。預留5個寄存器來保存這些數字。 (假設R3..R7。)將它們全部設置爲0.現在:減去10000;如果結果是> = 0,則增加R3並循環,否則加回10000;減去1000;如果結果是> = 0,增加R4並循環,否則加1000;等等。完成後,逐個輸出結果數字,跳過前導零。效率低下但有效。 –