汇编语言程序设计课件.ppt
程式二:程式一中4~103條指令可用如下2~8條指令替代 MOVAX,0 1 MOVBX,OFFSETTABL 2 MOVCX,100 3 LOP: ADDAX,[BX] 4 INCBX 5 INCBX 6 DECCX 7 JNZLOP 8 MOVYY,AX 9 MOVAH,4CH 10 INT21H 11程式二為一迴圈結構程式,其中:指令1~3為初始化部分:指令4為迴圈工作部分:指令5,6為迴圈修改部分:指令7,8為迴圈控制部分:指令9為結束處理部分:指令10,11為程式結束部分。指令4~8三部分稱為循環體,標號LOP處稱為迴圈頭部。例8統計數組中負元素的個數 數據塊的定義如下: DATA SEGMENT D1 DB-1,-3,5,6,-9 ;定義數組 COUNT EQU$-D1 RS DW? ;存放負數個數 DATA ENDS代碼段程式為: CODE SEGMENT ASSUMECS:CODE,DS:DATA ASSUMESS:STACK MOVAX,DATA MOVDS,AX MOVBX,OFFSETD1 ;建立數據指針 MOVCX,COUNT ;設置計數器初值 MOVDX,0 ;設置結果初值LOP1: MOVAL,[BX] CMPAL,0 JGEJUS INCDX JUS: INCBX DECCX JNZLOP1 ;或LOOPLOP1 MOVRS,DX MOVAH,4CH INT21H 例7和例8都是”先執行,後判斷“的結構。例9.統計寄存器AX中”1”的個數。 MOVCX,0LOP:ANDAX,AX JZSTPSALAX,1JNCLOPINCCXJMPLOPSTP:HLT這是一個“先判斷後執行”的結構。例10.軟體延時程式SOFTDELAYPROC MOVBL,10 DELAY:MOVCX,2801WAIT:LOOPWAIT DECBL JNZDELAY RETSOFTDELAYENDP這是一個二重迴圈程式,內迴圈為:WAIT:LOOPWAIT每個內迴圈可實現延時l0ms;外迴圈入口為DELAY,共進行l0次,總延時100ms。4.2.4副程式1.副程式定義及結構*主程序與副程式 副程式是一段相對獨立的、能實現一定功能的、能被其他程式調用的程式段。 能調用副程式的程式稱為主程序。*調用與返回 主程序用CALL指令調用副程式, 副程式用RET指令返回主程序。*副程式檔:副程式說明與副程式單。1)副程式說明①功能描述:包括副程式名稱、功能以及性能指標(如執行時間)等;②所用寄存器和存儲單元;③副程式的入口、出口參數;④副程式中又調用的其他副程式;⑤調用實例(可無)。副程式說明舉例如下:;副程式DTOB;兩位十進位數(BCD碼)轉換成二進位數;入口參數:AL中存放被轉換數;出口參數:CL中存放轉換後的二進位數;所用寄存器:BX;執行時間:0.06ms2.副程式應用中應注意的問題*主程序與副程式的連接*寄存器和工作單元中內容的保