0
BCD2BIN PROC
PUSH AX
PUSH CX
PUSH BX
PUSH DX
PUSH SI
MOV CL,08H
LB :
SAL DH,1
JC PRTONE
CMP CL,04H
JG SKP3
MOV DL,48
MOV AH,02H
INT 21H
JMP SKP3
PRTONE: CMP CL,04H
JG SKP3
MOV DL,49
MOV AH,02H
INT 21H
SKP3: DEC CL
CMP CL,00H
JE SKP4
JMP 040H
SKP4: MOV DL,' '
MOV AH,02H
INT 21H
POP SI
POP DX
POP BX
POP CX
POP AX
RET
BCD2BIN ENDP
這是將bcd編號轉換爲二進制數的程序的一部分。任何人都可以請解釋這背後的邏輯?說明,我可以通過查看互聯網瞭解,但是這樣做的邏輯/算法?謝謝!BCD到彙編語言的二進制轉換
'MOV DL,'0'SAL DH,1 ADC DL,0'這是如何顯示結果的?因爲在將bcd轉換爲二進制時,數字除以2,然後記錄餘數。但是,這裏是左移。這是爲什麼? – teesto 2014-11-06 06:28:43
@teesto:如果您除以2並使用餘數(右移並使用進位),您最終會輸入錯誤順序的數字。如果乘以2並使用溢出(左移並使用進位),則按照正確的順序結束數字。 – Brendan 2014-11-06 13:48:47
@teesto:'adc dl,0'就像「DL = DL + 0 + carry」。如果進位清零,則不改變DL,並且如果進位被設置,則DL增加。 – Brendan 2014-11-06 13:50:17