




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第6章匯編語言程序設計
本章內容提示
講述匯編語言程序設計的基本步驟、基本結構及各種結構程序的設計方法
6.1
匯編語言程序設計基本方法和基本步驟
6.2
算術運算類指令6.3
邏輯運算與移位類指令6.4順序程序的結構形式和程序設計6.1匯編語言程序設計基本方法和基本步驟6.1.1
匯編語言程序設計基本步驟
6.1.2
結構化程序的概念
6.1.3
流程圖畫法規定
返回本章首頁6.1.1匯編語言程序設計的一般步驟1.分析問題2.確定算法或解題思想
3.繪制流程圖和結構圖
4.分配存儲空間和工作單元
5.編制程序
6.程序靜態檢查
7.上機調試
返回本節6.1.2結構化程序的概念程序的設計、編寫和測試采用規定的組織形式,使程序結構清晰,易讀,易調試和修改基本結構:順序、分支(選擇)和循環每一個結構只有一個入口和一個出口3種結構任意組合和嵌套就構成結構化程序1)順序結構按照語句的先后次序執行一系列操作2)選擇結構(條件選擇結構)根據條件判斷選擇執行不同的程序段雙分支結構和多分支結構3)循環結構重復執行操作,直到條件出現為止循環的繼續由條件判斷決定,選擇結構的擴展6.1.3流程圖畫法規定
1.流程圖
由特定的幾何圖形、指向線、文字說明來表示數據處理的步驟,形象描述邏輯控制結構以及數據流程的示意圖。2.流程圖符號表示(1)起止框(2)判斷框
(3)處理框
(4)調用框
(5)指向線
(6)連接框
6.2算術運算類指令6.2.1加法類指令6.2.2減運算指令6.2.3乘運算指令6.2.4除運算指令6.2.5BCD碼調整指令6.2.1加法指令1、不帶進位加法指令ADD2、帶進位加指令ADC3、加1指令INC1、不帶進位加指令ADD語句格式:ADDDST,SRC(DST)+(SRC)→DST。2、帶進位加法指令ADC
格式:ADCDST,SRC(DST)+(SRC)+CF→DST。【例】無符號雙字加法運算。MOV AX,4652H ;(AX)=4652HADD AX,0F0F0H ;(AX)=3742H,CF=1MOV DX,0234H ;(DX)=0234HADC DX,0F0F0H ;(DX)=0F325H,CF=03、加1指令INC語句格式:INCDST(DST)+1→DST。單操作數——寄存器或存儲器單元可用于對計數器和地址指針進行調整。如:INCBX;即(BX)+1→BX。6.2.2減運算指令1、不帶借位減法指令SUB2、帶借位減指令SBB3、減1指令DEC4、求補指令NEG5、比較指令CMP1、不帶借位減法指令SUB
格式:SUBDST,SRC(DST)-(SRC)→DST【例】減法運算。MOV AX,5678H ;(AX)=5678HSUB AX,1234H ;(AX)=4444HMOV BX,3354H ;(BX)=3354HSUB BX,3340H ;(BX)=0014H2、帶借位減指令SBB
格式:SBBDST,SRC(DST)―(SRC)―CF→DST主要用于多精度數據運算3、減1指令DEC
格式:DECDST
(DST)-1→DST。單操作數——寄存器或存儲器單元一般用于對計數器和地址指針的調整。
如:DECCX
DEC[SI]4、求補指令NEG
格式:NEGDST將DST的逐位求反后加1,結果仍在DST中。即0-(DST)→DST。【例】求補運算。MOV AX,0FF64HNEG AL ;(AL)=9CHNEG AX ;(AX)=009CH5、比較指令CMP
格式:CMPOPD,OPS目的操作數減源操作數,根據結果設置標志位。【例】比較AL的內容與50的大小。CMP AL,50 ;(AL)-50JB BELOW ;(AL)<50,轉到BELOW處執行SUB AL,50 ;(AL)>=50,(AL)-50→ALINC AH ;(AH)+1→AHBELOW: …6.2.3乘法運算指令1、無符號數乘法指令MUL2、有符號乘指令IMUL1、無符號數乘法指令MUL
格式:MULSRC字節乘法:(AL)*(SRC)→AX字乘法:(AX)*(SRC)→DX,AX【例】無符號數0A3H與11H相乘。MOV AL,0A3H ;(AL)=0A3HMOV BL,11H ;(BL)=11HMUL BL;(AX)=0AD3H2、有符號乘指令IMUL
格式:IMULSRC字節乘法:(AL)*(SRC)→AX字乘法:(AX)*(SRC)→DX、AX。除計算對象是帶符號數外,其他約定同MUL,但計算結果不同。【例】有符號數0B4H與11H相乘。MOV AL,0B4H ;(AL)=B4HMOV BL,11H ;(BL)=11HIMUL BL ;(AX)=0FAF4H6.2.4除運算指令1、無符號除指令DIV2、有符號除指令IDIV3、符號擴展指令1、無符號除指令DIV語句格式:DIVSRC字節除:(AX)/(SRC)→AL(商)、AH(余數)字除:(DX、AX)/(SRC)→AX(商)、DX(余數)【例】無符號數0400H/0B4H的程序段。MOVAX,0400H ;(AX)=0400HMOVBL,0B4H ;(BL)=0B4HDIVBL;商(AL)=05H,余數(AH)=7CH2、有符號除指令IDIV
格式:IDIVSRC字節除:(AX)/(SRC)→AL(商)、AH(余數)字除:(DX,AX)/(SRC)→AX(商)、DX(余數)DIV和IDIV對標志的影響未定義,但可產生溢出。【例】實現有符號數0400H/0B4H運算的程序段。MOVAX,0400H ;(AX)=0400HMOV BX,0B4H ;(BX)=0B4HIDIVBX ;(AL)=0F3H,(AH)=24H3、符號擴展指令1)字節轉換成字指令CBW2)將字轉換成雙字指令CWD1)字節轉換成字指令CBW語句格式:CBW將AL中的數據符號位擴展至AH。【例】將字節數據擴展成字數據。MOV AL,0A5H ;(AL)=0A5HCBW ;(AX)=0FFA5HADD AL,70H ;(AL)=25HCBW ;(AX)=0025H2)將字轉換成雙字指令CWD
格式:CWD將AX中的數據符號位擴展至DX。【例】將AX中的字數據擴展成雙字數據。MOV DX,0 ;(DX)=0MOV AX,0FFABH ;(AX)=0FFABHCWD ;(DX)=0FFFFH(AX)=0FFABH6.2.5BCD碼調整指令1、加法的十進制調整指令DAA2、減法的十進制調整指令DAS3、加法的非壓縮BCD碼調整指令AAA4、減法的非壓縮BCD碼調整指令AAS1、加法的十進制調整指令DAA格式:DAA若(AL)低4位大于9或AF=1,(AL)=(AL)+6且AF=1;若(AL)>=0A0H或CF=1,(AL)=(AL)+60H且CF=1。SF、ZF、PF均有影響。【例】壓縮BCD碼的加法運算。MOVAL,68H ;(AL)=68H,壓縮BCD碼68MOVBL,28H ;(BL)=28H,壓縮BCD碼28ADDAL,BL;二進制加法(AL)=68H+28H=90HDAA ;十進制調整:(AL)=96H2、減法的十進制調整指令DAS
格式:DASAF=1或(AL)低4位大于9,(AL)=(AL)-6且AF=1(AL)>=0A0H或CF=1,則(AL)=(AL)-60H且CF=1。SF、ZF、PF均受影響。【例】壓縮BCD碼的減法運算。MOV AL,68H;(AL)=68H,表示壓縮BCD碼68MOV BL,28H;(BL)=28H,表示壓縮BCD碼28SUB AL,BL ;(AL)=68H-28H=40HDAS ;十進制調整:(AL)=40H
;實現壓縮BCD碼減法:68-28=403、加法的非壓縮BCD碼調整指令AAA格式:AAA如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)+6(AH)=(AH)+1(AF)=(CF)=1
且AL高4位清零。否則:(CF)=(AF)=0AL高4位清零。4、減法的非壓縮BCD碼調整指令AAS語句格式:AAS如果AL的低4位大于9或(AF)=1,則:(AL)=(AL)-6(AH)=(AH)-1(AF)=(CF)=1AL高4位清零。否則:(CF)=(AF)=0
AL高4位清零。其他標志位OF、PF、SF、ZF不確定。6.3邏輯運算與移位指令6.3.1邏輯運算指令6.3.2移位指令6.3.3循環移位指令6.3.1邏輯運算指令邏輯非指令NOT邏輯乘指令AND測試指令TEST邏輯或指令OR邏輯異或指令XOR(1)邏輯非指令NOT格式:NOTDST將目的操作數逐位取反后保存在原位置。【例】邏輯非運算。MOV AX,878AH ;(AX)=878AHNOT AX ;(AX)=7875H(2)邏輯與指令AND格式:ANDDST,SRC
將兩操作數進行與運算,結果存目的地址。用于目的操作數某些位清0。邏輯乘的運算法則為:1∧1=1,1∧0=0,0∧1=0,0∧0=0【例】將AL中第3位和第7位清零。
MOV AL,0FFHAND AL,77H
(3)測試指令TEST格式:TESTDST,SRC兩操作數按位邏輯與運算,按結果設標志位。【例】測試AX中的第12位,不為0轉NZERO。
TESTAX,1000HJNENZERO
(4)邏輯或指令OR格式:ORDST,SRC兩操作數進行邏輯或運算,結果存目的地址。邏輯或的運算法則為:1∨1=1,1∨0=1,0∨1=1,0∨0=0。【例】將AL寄存器中第3位和第7位置1。
MOV AL,0OR AL,88H
(5)邏輯異或指令XOR格式:XORDST,SRC兩操作數按位異或運算,結果送入目的地址。說明:按位加的運算法則為;1⊕1=0,1⊕0=1,0⊕1=1,0⊕0=0。【例】按位加運算。MOV AL,45H ;(AL)=45HXOR AL,31H ;(AL)=74H6.3.2移位指令包括算術移位指令、邏輯移位指令和循環移位指令。
[標號:]操作符OPD,1
或
[標號:]操作符OPD,CL目的操作數所有位移動1位或按寄存器CL指定的次數(0~255),結果送入目的地址。目的操作數寄存器數據或存儲器數據。(1)算術左移SAL和邏輯左移指令SHL
格式:SALDST,1
或SHLDST,1
SALDST,CL
或SHLDST,CL(DST)向左移動指定的次數,最高位進CF,最低位補0。(2)算術右移指令SAR格式:SARDST,1或SARDST,CL將(DST)向右移動指定的次數且最高位保持不變;移出的最低位進CF。SAR可實現對有符號數除n個2的運算(n為移位次數)。【例】算術右移運算。
MOV BH,0F4H ;(BH)=0F4HMOV CL,2 ;(CL)=2SAR BH,CL;(BH)=0FDH,CF=0(3)邏輯右移指令SHR格式:SHRDST,1
或SHRDST,CL將(DST)向右移動CL規定的次數,最高位補入相應個數的0,移出的最低位進CF
。6.3.3循環移位指令1、循環左移指令ROL格式:ROLDST,1或
ROLDST,CL將目的操作數首位相連,將環中的所有位一起向左移動CL規定的次數。CF的內容為最后移入位的值。(2)循環右移指令ROR格式:RORDST,1或
RORDST,CL將目的操作數首尾相連,將環中的所有位一起右移規定的次數。CF中為最后移入位的值。(3)帶進位的循環左移指令RCL格式:RCLDST,1或RCLDST,CL將目的操作數連同CF標志一起向左循環移動規定的次數。
(4)帶進位的循環右移指令RCR格式:RCRDST,1或RCRDST,CL將目的操作數連同CF標志一起向右循環移動規定的次數。6.4順序程序設計例1:試編寫一程序計算以下表達式的值。
w=(v-(x*y+z-540))/x
式中x、y、z、v均為有符號字數據。設x、y、z、v的值存放在字變量X、Y、Z、V中,結果存放在雙字變量W中。順序運算程序流程圖w=(v-(x*y+z-540))/xDATASEGMENTX DW 200YDW 100Z DW 3000V DW 10000W DW2DUP(?)DATA ENDSSTACKSEGMENTSTACK DB200DUP(0)STACK ENDSCODE SEGMENT ASSUMEDS:DATA,CS:CODE,SS:STACK題目w=(v-(x*y+z-540))/xSTART:MOVAX,DATA MOVDS,AX MOVAX,X IMULY;(X)*(Y)→DX:AX MOVCX,AX MOVBX,DX;(DX:AX)→BX:CX MOVAX,Z CWD ;(Z)符號擴展w=(v-(x*y+z-540))/xADDCX,AX ADCBX,DX;(BX:CX)+(DX:AX)→BX:CX SUBCX,540 SBBBX,0;(BX:CX)-540→BX:CX
MOVAX,VCWD ;(V)符號擴展
SUBAX,CX SBBDX,BX;(DX:AX)-(BX:CX)→DX:AX w=(v-(x*y+z-540))/x
IDIVX ;(DX:AX)/X
MOVW,AX;商→W MOVW+2,DX;余數DX→W+2 MOVAH,4CH;返回DOS狀態
INT 21HCODE ENDS
END STARTw=(v-(x*y+z-540))/x
例2:已知某班學生的英語成績按學號(從1開始)從小到大的順序排列在TAB表中,要查的學生的學號放在變量NO中
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 廣告管理案例評析(一)
- 2025年工業互聯網平臺TEE在智能工廠設備維護中的應用分析報告
- 攪拌站業務人員管理制度
- picc管維護管理制度
- 山西村集體用工管理制度
- 三級子公司工資管理制度
- 學院圖書館采編管理制度
- 2025年福建省中考道德與法治真題(解析版)
- 星級管理動態管理制度
- 為規范公司印章管理制度
- 失業保障國際比較-洞察及研究
- 黨群工作筆試題目及答案
- 廣東省廣州市天河區2023-2024學年八年級下學期期末歷史試卷(含答案)
- 2025年高考作文全國二卷范文《贈君星火夢照我天地心》
- 2025年江蘇蘇州市昆山市惠民物業管理有限公司招聘筆試參考題庫附帶答案詳解
- 2025年陜西延長石油礦業有限責任公司招聘筆試參考題庫含答案解析
- 國家開放大學Python程序設計形考任務實驗六-互聯網評論數據分析及其展示綜合案例
- 天津市部分區2023-2024學年八年級下學期期末練習道德與法治試卷
- 2024-2025年上海中考英語真題及答案解析
- 國開電大《Java語言程序設計》形考任務三答案
- 計算機網絡技術實踐教程 第7章
評論
0/150
提交評論