我想對自己解釋下8085彙編代碼英特爾8085彙編中的bitshift操作是做什麼的?
我有這樣的代碼是兩個數要求(從IDE內的虛擬鍵盤),並顯示在發光二極管7,8:
.ORG 0000
CALL DATA
MOV C,A
CALL PRNT
CALL DATA
MOV E,A
CALL PRNT
MVI D,00H
MOV L,E
MVI H,00H
MOV A,C
DCR A
JUMP:
DAD D
DCR A
JNZ JUMP
MOV A,L
DAA
JMP IMPR
RET
DATA:
MVI A,00000000B
OUT 00H
IN 00H
RLC
RLC
RLC
RLC
ANI F0H
MOV B,A
MVI A,00000000B
OUT 00H
IN 00H
ANI 0FH
ORA B
RET
IMPR:
MOV B,A
ANI F0H
RLC
RLC
RLC
RLC
CALL NUMZ
OUT 06H
MOV A,B
ANI 0FH
CALL NUMZ
OUT 07H
RET
NUMZ:
CPI 00H
JNZ ONE
MVI A,01110111B
JMP EXIT
ONE:
CPI 01H
JNZ TWO
MVI A,01000100B
JMP EXIT
TWO:
CPI 02H
JNZ THREE
MVI A,00111110B
JMP EXIT
THREE:
CPI 03H
JNZ FOUR
MVI A,01101110B
JMP EXIT
FOUR:
CPI 04H
JNZ FIVE
MVI A,01001101B
JMP EXIT
FIVE:
CPI 05H
JNZ SIX
MVI A,01101011B
JMP EXIT
SIX:
CPI 06H
JNZ SEVEN
MVI A,01111011B
JMP EXIT
SEVEN:
CPI 07H
JNZ EIGHT
MVI A,01000110B
JMP EXIT
EIGHT:
CPI 08H
JNZ NINE
MVI A,01111111B
JMP EXIT
NINE:
CPI 09H
JNZ SAL
MVI A,01001111B
JMP EXIT
EXIT:
RET
我不包括PRNT
,因爲這對我的問題並不重要。
我明白.ORG 0000
這是程序的開始 - 它就像帕斯卡爾的BEGIN
。
CALL DATA
是充滿二進制零累加器和顯示他們(?)在端口0子程序(十六進制00H),然後它會(從虛擬鍵盤),一個數字和然後它的左移在位移操作。
我的問題是爲什麼?這樣做有什麼意義?有什麼好處?我已經在維基百科上閱讀過它,但我仍然不明白。它在這段代碼中做了什麼,它爲什麼需要?
保羅,不問我的問題......爲什麼呢?什麼是在幹什麼這麼點?有什麼好處??? 我已經在維基百科上閱讀過它,但我仍然不明白。 它在這段代碼中做了什麼以及它爲什麼需要它。 – Ashir
以上答案的哪部分你不明白? 4'RLC'指令相當於C中的'<< 4' - 是什麼令你困惑? –
爲什麼你需要旋轉它們?爲什麼?,幹什麼這麼做?,有什麼好處?它在這段代碼中做了什麼以及它爲什麼需要它...... – Ashir