สำนักงานราชบัณฑิตยสภา
151 ศ. ดร.มงคล เดชนคริ นทร์ วารสารราชบัณฑิตยสถาน ปีที่ ๓๘ ฉบับที่ ๓ ก.ค.-ก.ย. ๒๕๕๖ 6) H_OUT รูทีนนี้แปลงข้อมูลขนาด ๒ ไบต์ในเรจิสเตอร์ DX ให้เป็นข้อมูลอักขระแอสกี ๔ ตัวแล้วส่งไปแสดงบนจอของพีซี ตัวอย่างเช่นเมื่อ DX มีข้อมูลเป็น 3E7CH รูทีนนี้จะแปลงข้อมูลให้เป็น อักขระแอสกี “3”, “E”, “7”, “C” แล้วส่งไปแสดงบนจอของพีซีตามล� ำดับ รายการชุดค� ำสั่งภาษาแอสเซมบ ลีของรูทีน H_OUT ( Antonakos, 1996: 505) เป็นดังนี้ 7) C_OUT รูทีนนี้ตรวจสอบวงจรรวม 8251 ว่าพร้อมที่จะส่งข้อมูลออกทางช่องสัญญาณ อนุกรมหรือไม่ ถ้าพร้อม ก็ให้ส่งข้อมูลในเรจิสเตอร์ AL ไปแสดงบนจอของพีซี รายการชุดค� ำสั่งภาษา แอสเซมบลีของรูทีน C_OUT ( Antonakos, 1996: 505) เป็นดังนี้ - 6 - ส งไปแสดงบนจอของพีซี รายการชุดคําสั่งภาษาแอสเซมบลีของรูทีน A_BIAS (Antonakos, 1996: 504-505) เป นดังนี้ ; Routine to convert lower nibble of AL to ascii & display it A_BIAS PROC NEAR AND AL,0FH ; clear upper nibble ADD AL,30H ; add ascii bias for a number CMP AL,3AH ; check for letter (A - F) JC NO_7 ; not to be added with 7 ADD AL,7 ; add bias for a letter NO_7: CALL C_OUT ; send char to display on PC RET A_BIAS ENDP 6) H_OUT รูทีนนี้แปลงข อมูลขนาด ๒ ไบต ในเรจิสเตอร DX ให เป นข อมูลอักขระแอสกี ๔ ตัวแล ว ส งไปแสดงบนจอของพีซี ตัวอย างเช นเมื่อ DX มีข อมูลเป น 3E7CH รูทีนนี้จะแปลงข อมูลให เป น อักขระแอสกี “3”, “E”, “7”, “C” แล วส งไปแสดงบนจอของพีซีตามลําดับ รายการชุดคําสั่ง ภาษาแอสเซมบลีของรูทีน H_OUT (Antonakos, 1996: 505) เป นดังนี้ ; Routine to convert & output DX data to 4 ascii characters H_OUT PROC NEAR MOV AL,DH ; do high byte first CALL HTOA MOV AL,DL ; then do low byte CALL HTOA RET H_OUT ENDP C_OUT รูทีนนี้ตรวจสอบวงจรรวม 8251 ว าพร อมที่จะส งข อมูลออกทางช องสัญญาณอนุกรม หรือไม ถ าพร อม ก็ให ส งข อมูลในเรจิสเตอร AL ไปแสดงบนจอของพีซี รายการชุดคําสั่ง ภาษาแอสเซมบลีของรูทีน C_OUT (Antonakos, 1996: 505) เป นดังนี้ ; Routine to test 8251 for TxRDY and send character in AL C_OUT PROC NEAR PUSH AX MOV AH,AL ; save AL in AH CO_S: IN AL,S_CTRL ; get 8251 status, (S_CTRL = 21H) JMP SHORT $+2 ; I/O delay AND AL,05H ; test xmit ready (TxRDY) (bit 0 set?) CMP AL,05H ; and Tx buffer empty? (bit 2 set?) JNZ CO_S ; loop until not busy MOV AL,AH ; retrieve AL OUT S_DATA,AL ; send character in AL, (S_DATA = 20H) JMP SHORT $+2 ; I/O delay POP AX RET C_OUT ENDP - 6 - ส งไปแสดงบนจอของพีซี รายการชุดคําสั่งภาษาแอสเซมบลีของรูทีน A_BIAS (Antonakos, 1996: 504-505) เป นดังนี้ ; Routine to convert lower nibble of AL to ascii & display it A_BIAS PROC NEAR AND AL,0FH ; clear upper nibble ADD AL,30H ; add ascii bias for a number CMP AL,3AH ; check for letter (A - F) JC NO_7 ; not to be added with 7 ADD AL,7 ; add bias for a letter NO_7: CALL C_OUT ; send char to display on PC RET A_BIAS ENDP 6) H_OUT รูทีนนี้แปลงข อมูลขนาด ๒ ไบต ในเรจิสเตอร DX ให เป นข อมูลอักขระแอสกี ๔ ตัวแล ว ส งไปแสดงบนจอของพีซี ตัวอย างเช นเมื่อ DX มีข อมูลเป น 3E7CH รูทีนนี้จะแปลงข อมูลให เป น อักขระแอสกี “3”, “E”, “7”, “C” แล วส งไปแสดงบนจอของพีซีตามลําดับ รายการชุดคําสั่ง ภาษาแอสเซมบลีของรูทีน H_OUT (Antonakos, 1996: 505) เป นดังนี้ ; Routine to convert & output DX data to 4 ascii characters H_OUT PROC NEAR MOV AL,DH ; do high byte first CALL HTOA MOV AL,DL ; then do low byte CALL HTOA RET H_OUT ENDP 7) C_OUT รูทีนนี้ตรวจสอบวงจรรวม 8251 ว าพร อมที่จะส งข อมูลออกทางช องสัญญาณอนุกรม หรือไม ถ าพร อม ก็ให ส งข อมูลในเรจิสเตอร AL ไปแสดงบนจอของพีซี รายการชุดคําสั่ง ภาษาแอสเซมบลีของรูทีน C_OUT (Antonakos, 1996: 505) เป นดังนี้ ; Routine to test 8251 for TxRDY and send character in AL C_OUT PROC NEAR PUSH AX MOV AH,AL ; save AL in AH CO_S: IN AL,S_CTRL ; get 8251 status, (S_CTRL = 21H) JMP SHORT $+2 ; I/O delay AND AL,05H ; test xmit ready (TxRDY) (bit 0 set?) CMP AL,05H ; and Tx buffer empty? (bit 2 set?) JNZ CO_S ; loop until not busy MOV AL,AH ; retrieve AL OUT S_DATA,AL ; send character in AL, (S_DATA = 20H) JMP SHORT $+2 ; I/O delay POP AX RET C_OUT ENDP - 6 - ง ง งี ซี รายการชุดํ าสั่ง าษา อสเซี ข งรูทีน _ I (Antonakos, 1996: 504-505) เป นั งี้ ; Routine to convert lo er nibble of AL to asci & display it _BIAS PR C NE R A AL,0F ; clear upper nibble A AL,30 ; add asci bias for a nu ber C P AL,3 ; check for let er (A - F) JC N _7 ; not to be added with 7 A AL,7 ; add bias for a let er _7: C LL C_ T ; send char to display on PC RET _BIAS E P 6) _ UT รูทีนนี้แปลง อู ลข า ๒ ไบ ใ เรจิสเตอร D ใ เป น อมูลั ก ร แอสกี ๔ ตัวแล ว ส งไป งบนจ งพีซี ตัว ย างเช นเมื่อ D มีข อมูลเป น 3E7 รูทีนี้ จ ง อมูลให เป นั ก ร แ สี “3”, “ ”, “7”, “C” ล วส ง ง งี ซีตาํ าั บ ราย ารุ ดํ าั่ ง า า เซี ข งรูทีน H_ (Antonakos, 1996: 505) เป นั งี้ ; Routine to convert & output D data to 4 asci characters _ T PR C NE R M AL,D ; do high byte first C LL HT M AL,DL ; then do lo byte C LL HT RET _ T E P 7) _ รูทีนนี้ตร ง รร 8251 าพร อมี่ จะส ง อู ล าง องั ญญา อนุกรม รือไม ถ า ร อม ก็ใ ส งข อู ลใ เริ สเต ร AL ป งบน ของี ซี ราย ารชุดคําสั่ง า าแ เซี ข งรูทีน C_ (Antonakos, 1996: 505) เป นั งี้ ; Routine to test 8251 for TxR and send character in AL C_ T PR C NE R P S A M A ,AL ; save AL in A C _S: IN AL,S_CTRL ; get 8251 status, (S_CTRL = 21 ) JMP S RT $+2 ; I/O delay A AL,05 ; test x it ready (TxR ) (bit 0 set?) C P AL,05 ; and Tx buf er empty? (bit 2 set?) JNZ C _S ; loop until not busy M AL,A ; retrieve AL O T S_ T ,AL ; send character in AL, (S_ T = 20 ) JMP S RT $+2 ; I/O delay P P A RET C_ T E P
Made with FlippingBook
RkJQdWJsaXNoZXIy NTk0NjM=