問題描述:
設將要處理的十個十進制數ASCII碼存放在偏移地址爲2000H開始的內存單元中,把它轉換爲BCD碼後,再分別放在偏移地址爲2500H開始的內存單元中:
分析:
1一字節的ASCII碼取其第四位變成BCD碼
2十個數據,可用循環,且循環次數已知,用LOOP語句
START :
MOV CX,000AH;循環10次
MOV SI,2000H ;ASCII碼首地址
MOV DI,2500H ;BCD碼首地址
A1:
MOV AL,[SI] ;第一個數地址放到SI傳送給AL
CMP AL,3AH ;凡是大於等於3AH直接跳出,說明不是十進制數
JNB A2 ;不低於3AH跳轉A2
SUB AL,30H ;減去高四位的值 ASCII -> BCD
A2:
MOV [DI],AL ;結果存入目標地址
INC SI
INC DI
LOOP A1