• /  81
  • 下載費用: 24.9積分  

微機原理與匯編語言實用教程_第5章_運算程序設計及應用.ppt

'微機原理與匯編語言實用教程_第5章_運算程序設計及應用.ppt'
第5章 運算程序設計及應用舉例5.1算術運算程序設計5.1.1 加法指令 1. 普通加法指令ADD (ADD Binary Numbers Instruction) 指令格式:ADD DST,SRC 功能:將源操作數和目的操作數相加,運算結果送回目的操作數,即:DST? (DST)+(SRC)。受影響的標志位有:AF、CF、OF、PF、SF和ZF。 例如:ADD AL,5 ADD AX,DX ADD AL,VARB ;VARB是字節變量 ADD VARW,SI ;VARW是字變量 ADD [BX+SI],AX 例5.1 加法運算。MOV AX,7896H ;(AX)=7896H,即(AH)=78H,(AL)=96H ;各標志位保持不變ADD AL,AH ;(AL)=0EH,(AH)=78H,即(AX)=780EH ;CF=1,ZF=0,SF=0,OF=0,AF=0,PF=0ADD AH,AL ;(AH)=86H,(AL)=0EH,即(AX)=860EH ;CF=0,ZF=0,SF=1,OF=1,AF=1,PF=0ADD AX,3456H ;(AX)=0BA64H,即(AH)=0BAH,(AL)=64H ;CF=0,ZF=0,SF=1,OF=0,AF=0,PF=0 2. 帶進位的加法指令ADC (ADD With Carry Instruction) 指令格式:ADC DST,SRC 功能:將源操作數和目的操作數相加,再加上進位標志位CF的內容,運算結果送回目的操作數,即:DST? (DST)+(SRC)+CF。受影響的標志位有:AF、CF、OF、PF、SF和ZF。 例如:ADC AL,[SI] ADC DX,BX ADC AL,VARB ;VARB是字節變量例5.2 雙字加法運算。MOV AX,0F102H ;(AX)=0F102H,各標志位保持不變ADD AX,5A23H ;(AX)=4B25H ;CF=1,ZF=0,SF=0,OF=0,AF=0, ;PF=0MOV DX,36B9H ;(DX)=36B9H,各標志位保持不變ADC DX,0532H ;(DX)=3BECH ;CF=0,ZF=0,SF=0,OF=0,AF=0, ;PF=0 3. 加1指令INC (Increment by 1 Instruction) 指令格式:INC OPRD 功能:將操作數加1,結果送回該操作數,即:OPRD? (OPRD)+1。受影響的標志位有:AF、OF、PF、SF和ZF,不影響CF。 該指令是單操作數指令,操作數可以是寄存器或存儲單元。主要用于對計數器和地址指針進行調整。 例如:INC CX INC VARB ;VARB是字節變量5.1.2 減法指令 1. 普通減法指令SUB (Subtract Binary Values Instruction) 指令格式:SUB DST,SRC 功能:將目的操作數減去源操作數,結果送回目的操作數,即:DST? (DST)-(SRC)。受影響的標志位有:AF、CF、OF、PF、SF和ZF。 例如:SUB AL,15H SUB AL,AH SUB DX,[BX] SUB AH,VARB ;VARB是字節變量例5.3 減法運算MOV BX,9034H ;(BX)=9034H,即(BH)=90H,(BL)=34H ;各標志位保持不變SUB BH,BL ;(BH)=5CH,(BL)=34H,即(BX)=5C34H ;CF=0,ZF=0,SF=0,OF=1,AF=1,PF=1SUB BL,BH ;(BL)=0D8H,(BH)=5CH,即(BX)=5CD8H ;CF=1,ZF=0,SF=1,OF=0,AF=1,PF=1SUB BL,78H ;(BL)=60H,(BH)=5CH,即(BX)=5C60H ;CF=0,ZF=0,SF=0,OF=1,AF=0,PF=1 2.帶借位的減法指令SBB (Subtract with Borrow Instruction) 指令格式:SBB DST,SRC 功能:將目的操作數減去源操作數,再減去借位標志位CF,結果送回目的操作數,即:DST? (DST)-(SRC)-CF。受影響的標志位有:AF、CF、OF、PF、SF和ZF。 例如:SBB AL,DL SBB [BX],DX該指令主要用于多字節數相減的場合。例5.4 雙精度數帶借位減法運算。DATA SEGMENTSUB1 DW 7788H,5566H ;被減數55667788HSUB2 DW 3344H,1122H ;減數11223344HSUB3 DW 0,0 ;準備存放結果DATA ENDS … MOV AX,SUB1 SUB AX,SUB2 MOV SUB3,AX ;兩低位字相減,結果送SUB3 MOV AX,SUB1+2 SBB AX,SUB2+2 ;兩高位字相減,并減去低位的借位CF MOV SUB3+2,AX … 3.減1指令DEC (Decrement by 1 Instruction) 指令格式:DEC OPRD 功能:這條指令完成將操作數減1,結果送回該操作數,即:OPRD? (OPRD)-1。受影響的標志位:AF、OF、PF、SF和ZF,不影響CF。 該指令是單操作數指令,操作數可以是寄存器或存儲單元。主要用于對計數器和地址指針進行調整。 例如:DEC CX 4.取補指令NEG (Negate Instruction) 指令。省略部分。LEA DI, STRING2 MOV CX, NREPZ CMPSB JNE NO YES:LEA DX, MESS1 JMP DISPNO:LEA DX,MESS2DISP:MOV AH,09H INT 21H MOV AX,4C00H INT 21HCODE ENDS END START5.6 系統的功能調用5.6.1 DOS功能調用 1. DOS功能調用方法 DOS功能調用的子程序已按順序編號——功能號(00H~68H),其調用方法是: (1) 入口參數→指定寄存器 (2) 功能號→AH (3) INT 21H 用戶只須給出以上三方面信息,DOS就可根據所給信息自動轉入相關子程序執行。2. 常用的系統功能調用1) 鍵盤輸入(1) 1號功能調用——從鍵盤輸入單個字符調用格式:MOV AH,1INT 21H功能:等待從鍵盤輸入一個字符并送入AL。執行時系統將掃描鍵盤,等待有健按下,一旦有健按下,就將其字符的ASCII碼讀入,先檢查是否Ctrl-Break,若是,退出命令執行;否則將ASCII碼送AL,同時將該字符送顯示器顯示。(2) 10號功能調用——從鍵盤輸入字符串調用格式:① 緩沖區首地址→DS ② 10→AH ③ INT 21H功能:從鍵盤接收字符串送入內存的輸入緩沖區,同時送顯示器顯示。調用前要求:先定義一個輸入緩沖區,緩沖區內的第一個字節指出緩沖區能容納的字符個數;第二個字節是實際輸入的字符的個數,這個數據由該功能自動填入;第三個字節開始按字節存放從鍵盤接收的字符,最后結束字符串的回車符0DH還要占1個字節。注意:調用時,要求DS:DX指向輸入緩沖區首地址。例如:MAXLEN DB 100 ;第1個字節指出緩沖區能容納的字符個數 ;即緩沖區長度,不能為0ACLEN DB ? ;第2個字節保留,以存放實際輸入的字符個數STRING DB 100 DUP(?) ;第3個字節開始存放從鍵盤輸入的字符串。 調用格式: LEA DX,MAXLEN(緩沖區首偏移地址) MOV AH,10INT 21H例5.39 從鍵盤輸入字符串。DATA SEGMENTBUF DB 16 ;緩沖區長度DB ? ;保留為系統填入實際輸入的字符個數DB 16 DUP(?) ;定義16B存儲空間DATA ENDSCODE SEGMENT…MOV AX,DATAMOV DS,AX… LEA DX,BUFMOV AH,10INT 21H… CODE ENDS如果鍵入字符串:HOW DOU YOU DO?此時緩沖區BUF的各個存儲單元內容如下:2) 顯示輸出(1) 2號功能調用——在顯示器上顯示輸出單個字符調用格式:① 將待顯示字符的ASCII碼→DL ② 2→AH ③ INT 21H功能:將DL中的字符送顯示器顯示。例5.40 顯示輸出大寫字母A 。MOV DL,41H ;或寫為 MOV DL,'A' MOV AH,2INT 21H(2) 9號功能調用——在顯示器上顯示輸出字符串調用格式: ① 將待顯示字符串的首地址→DX ② 9→AH ③ INT 21H功能:將當前數據區中DS:DX所指向的以'$'結尾的字符串送顯示器顯示。例5.41 在顯示器上顯示字符串”YOU ARE SUCESSFUL!”DATA SEGMENTSTRING DB ' YOU ARE SUCESSFUL! $ 'DATA ENDSCODE SEGMENT… MOV AX,DATAMOV DS,AXLEA DX,STRING ;或為MOV DX,OFFSET STRINGMOV AH,9INT 21H… CODE ENDS5.6.2 DOS功能調用應用舉例 例5.42 利用DOS系統功能實現人機對話。 例5.43 從鍵盤輸入一個字符,并在顯示器上輸出,按下CTRL+C組合鍵時結束 例5.44 將16位二進制數轉換為十進數的ASCII碼形式 具體程序略。5.6.3 BIOS中斷調用 BIOS的功能調用方法和DOS相同,BIOS輸入功能調用是INT 16H,輸出功能調用是INT 10H,常用的功能有如下: 1.0號功能調用――從鍵盤輸入一個字符 調用格式:MOV AH,0 INT 16H 功能:等待從鍵盤輸入一個字符并將字符的ASCII碼送入AL。2.1號功能調用――判斷鍵盤是否有輸入調用格式:MOV AH,01H INT 16H功能:判斷是否有按鍵,用ZF標志返回結果。ZF=1,沒有輸入;ZF=0,有輸入。3.0EH功能調用――輸出字符調用格式:顯示字符ASCII→AL 顯示頁號→BHMOV AH,0EH INT 10H 功能:向屏幕輸出一個字符。例 5.45 用ROM-BIOS功能調用顯示按下的字符,通常使BX=0。MOV AH,0 ;功能號:AH←0INT 16H ;鍵盤功能調用(INT 16H) ;出口參數:AL←按鍵的ASCII碼MOV BX,0 ;入口參數:BX←0,AL=顯示字符ASCIIMOV AH,0EH ;功能號:AH←0EHINT 10H ;顯示功能調用(INT 10H)5.7 綜合編程應用舉例 例 5.46 編寫一個程序:先提示輸入數字“Input Number:0~9”,然后在下一行顯示輸入的數字,結束;如果不是鍵入了0~9,就提示錯誤“Error!”,繼續等待輸入數字。 程序如下:DATA SEGMENT MSG1 DB ‘Input Number:0~9’,0DH,0AH,‘$’ MSG2 DB ‘Error!’,0DH,0AH,‘$’DATA ENDSCODE SEGMENT ASSUME CS:CODE,DS:DATASTART:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MSG1 MOV AH,9 INT 21HL2: MOV AH,01H INT 21H CMP AL,0 JL L1 CMP AL,9 JG L1 MOV AH,4CH INT 21HL1: MOV DX,OFFSET MSG2 MOV AH,9 INT 21H JMP L2 CODE ENDS END START
關 鍵 詞:
實用 匯編語言 運算 教程 原理 程序設計 微機 應用
 天天文庫所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:微機原理與匯編語言實用教程_第5章_運算程序設計及應用.ppt
鏈接地址: http://www.476824.live/p-51497104.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服點擊這里,給天天文庫發消息,QQ:1290478887 - 聯系我們

本站為“文檔C2C交易模式”,即用戶上傳的文檔直接賣給(下載)用戶,本站只是中間服務平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有【成交的100%(原創)】。本站是網絡服務平臺方,若您的權利被侵害,侵權客服QQ:1290478887 歡迎舉報。

[email protected] 2017-2027 http://www.476824.live 網站版權所有

粵ICP備19057495號 

收起
展開
球探网即时蓝球比分 福州福彩快三走势图 今日股市最新消息上 手机炒股和电脑炒股的区别 广东十一选五app 天天选4 重庆时时人工计划稳赢 福彩3d预测总汇大全 山西十一选五预测今天 东方6+1预测 10万元存款如何理财