




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
微機原理及應(yīng)用第五章8086指令系統(tǒng)第二十講邏輯運算指令之與指令下面我們來學(xué)習(xí)邏輯與指令,邏輯與指令是雙操作數(shù)指令,它的操作碼是AND,邏輯運算指令之與指令雙操作數(shù)指令操作碼:ANDdest,src它的功能是計算兩個操作數(shù)之間按位相與的結(jié)果,并將結(jié)果送入目的操作數(shù)中邏輯運算指令之與指令雙操作數(shù)指令操作碼:ANDdest,src功能計算兩個操作數(shù)之間按位相與的結(jié)果將結(jié)果送入目的操作數(shù)中雙操作數(shù)指令操作碼:ANDdest,src功能計算兩個操作數(shù)之間按位相與的結(jié)果將結(jié)果送入目的操作數(shù)中它可以實現(xiàn)兩個八位操作數(shù)之間的相與運算或是兩個16位操作數(shù)之間的相與運算,兩個八位操作數(shù)之間的相與運算兩個十六位操作數(shù)之間的相與運算結(jié)果沒有進位或借位,但是兩個操作數(shù)的字長必須要相等進位借位兩個八位操作數(shù)之間的相與運算兩個十六位操作數(shù)之間的相與運算雙操作數(shù)指令字長相等與運算指令主要有三種應(yīng)用場景,應(yīng)用場景1,計算兩個操作數(shù)按位相與的結(jié)果,比如ANDBL,[si],這條指令是計算BL與SI指向的兩個連續(xù)的內(nèi)存單元構(gòu)成的16位數(shù)據(jù)相與的結(jié)果應(yīng)用場景1計算兩個操作數(shù)按位相與的結(jié)果ANDBL,[SI]兩個內(nèi)存單元構(gòu)成16位數(shù)據(jù)相與第二個應(yīng)用場景是保留操作數(shù)的某幾位將其他位清0,這里基于的原理就是一個數(shù)跟1相與,結(jié)果還是它自己,跟0相加,結(jié)果為0所以,在這種應(yīng)用場景下,只需要設(shè)計一個立即數(shù),這個立即數(shù)在想要清零的那些位上為0,在其他的位上都為1應(yīng)用場景2保留操作數(shù)的某幾位,清零其他位一個數(shù)跟1相與,結(jié)果等于1一個數(shù)跟0相加,結(jié)果等于0立即數(shù)清零的位為0,其他位為1例如,ANDAL,0fh這條指令將AL的高四位清0,低四位保留ANDAL,0FH應(yīng)用場景2高四位清0,低四位保留保留操作數(shù)的某幾位,清零其他位,第三個應(yīng)用場景是在操作數(shù)不變的情況下使CF和OF位清零,這個應(yīng)用場景利用的是,與運算的結(jié)果不管結(jié)果如何都會使CF和OF位清0應(yīng)用場景3操作數(shù)不變下使CF和OF位清零運算結(jié)果:CF和OF位都會清0例如,ANDAX,AX,這條指令是求AX自己跟自己相與的結(jié)果,那就是0和0相與,1和1相與,結(jié)果保持不變,但是在計算完成后,CF和OF為0ANDAX,AX應(yīng)用場景30和0相與1和1相與結(jié)果不變操作數(shù)不變下使CF和OF位清零下面我們通過一個具體的例子來看一下,與運算指令如何應(yīng)用,題目要求從地址為3f8h這個端口讀入一個字節(jié),如果這個數(shù)的比特一位為一,則可以從38h這個端口將data為首地址的一個字輸出“與”指令應(yīng)用從地址為3F8H端口中讀入一個字節(jié)數(shù),如果該數(shù)bit1位為1,則可從38FH端口將DATA為首地址的1個字輸出,否則就不能進行數(shù)據(jù)傳送,請編寫相應(yīng)的程序段。這個題目是,輸入輸出指令和與運算指令的應(yīng)用其中,輸入數(shù)據(jù)是用輸入指令獲取的,獲取到數(shù)據(jù)以后,輸入指令輸出指令與運算指令輸入數(shù)據(jù)“與”指令應(yīng)用從地址為3F8H端口中讀入一個字節(jié)數(shù),如果該數(shù)bit1位為1,則可從38FH端口將DATA為首地址的1個字輸出,否則就不能進行數(shù)據(jù)傳送,請編寫相應(yīng)的程序段。要用與運算指令來判斷一下這個數(shù)據(jù)是否滿足條件,輸入指令輸出指令與運算指令輸入數(shù)據(jù)是否滿足條件“與”指令應(yīng)用從地址為3F8H端口中讀入一個字節(jié)數(shù),如果該數(shù)bit1位為1,則可從38FH端口將DATA為首地址的1個字輸出,否則就不能進行數(shù)據(jù)傳送,請編寫相應(yīng)的程序段。,如果不能滿足條件的話,就再去這個端口取數(shù)據(jù),如果能滿足條件的話,就按題目的意思用輸出指令將一個數(shù)據(jù)輸出輸入指令輸出指令與運算指令
不滿足條件:端口取數(shù)據(jù)滿足條件:輸出指令將數(shù)據(jù)輸出“與”指令應(yīng)用從地址為3F8H端口中讀入一個字節(jié)數(shù),如果該數(shù)bit1位為1,則可從38FH端口將DATA為首地址的1個字輸出,否則就不能進行數(shù)據(jù)傳送,請編寫相應(yīng)的程序段?;谶@個思路,我們可以畫一下流程圖,流程圖畫好以后,我們將指令填寫在相應(yīng)的流程處,即可完成這個程序分析題目
畫流程圖
寫程序分析題目
畫流程圖
寫程序流程思路下面我們來畫一下這個程序的流程圖,首先,是要從指定的端口讀入數(shù)據(jù)拿到數(shù)據(jù)以后,要判斷一下它的bit1位是否為1,其次,如果為1,從另一個指定的端口輸出數(shù)據(jù),如果不為1,就重新讀數(shù)據(jù),這就是整個流程
畫流程圖開始從3F8H端口讀入數(shù)據(jù)此數(shù)據(jù)的bit1是否為1從38FH端口將DATA為首地址的字輸出YN超過FFHIN指令流程畫完了,我們來看一下,第一步讀入數(shù)據(jù),要用IN指令,由于給定的端口是3F8H,超過了FFH,因此要先把這個端口傳送到DX中,再從DX中讀入數(shù)據(jù)
畫流程圖開始從3F8H端口讀入數(shù)據(jù)此數(shù)據(jù)的bit1是否為1從38FH端口將DATA為首地址的字輸出YN端口:3F8H傳送DX讀入數(shù)據(jù)OUT指令最后一步是輸出數(shù)據(jù),要用OUT指令,同樣,由于給定的端口也超過了FFH,因此也要先把端口號傳送到DX中,再從DX中輸出數(shù)據(jù)中間判斷條件這一步,是判斷數(shù)據(jù)的bit1位是否為1,我們要知道最低位是比特0位,所以bit1位其實就是次最低位,IN指令
畫流程圖開始從3F8H端口讀入數(shù)據(jù)此數(shù)據(jù)的bit1是否為1從38FH端口將DATA為首地址的字輸出YN超過FFH端口:3F8H傳送DX輸出數(shù)據(jù)最低位:比特0位次最低位:比特1位AND指令OUT指令最后一步是輸出數(shù)據(jù),要用OUT指令,同樣,由于給定的端口也超過了FFH,因此也要先把端口號傳送到DX中,再從DX中輸出數(shù)據(jù)中間判斷條件這一步,是判斷數(shù)據(jù)的bit1位是否為1,我們要知道最低位是比特0位,所以bit1位其實就是次最低位,IN指令
畫流程圖開始從3F8H端口讀入數(shù)據(jù)此數(shù)據(jù)的bit1是否為1從38FH端口將DATA為首地址的字輸出YNAND指令那么與次數(shù)據(jù)相與的立即數(shù),我們可以設(shè)計成02H,當(dāng)兩者相與的結(jié)果為0時,說明數(shù)據(jù)的bit1位為0,當(dāng)兩者相與的結(jié)果為1時,說明數(shù)據(jù)的bit1為1IN指令
畫流程圖開始從3F8H端口讀入數(shù)據(jù)此數(shù)據(jù)的bit1是否為1從38FH端口將DATA為首地址的字輸出YN次數(shù)據(jù)立即數(shù)結(jié)果為0時,bit1位為0結(jié)果為1時,bit1位為1好,下面我們來看具體的程序是怎么寫的,一般程序會有初始化的部分,用來設(shè)置內(nèi)存單元中存儲的初值等等具體程序一般程序的初始化部分具體程序一般程序的初始化部分向下箭頭內(nèi)存單元中存儲的初值1小時前回復(fù)(0)
內(nèi)存單元中存儲的初值但是這個程序中沒有設(shè)置初始值的要求,那么初始化的部分就可以不寫具體程序一般程序的初始化部分內(nèi)存單元中存儲的初值程序沒設(shè)置初始值要求,初始化部分可不寫下面來填寫讀入數(shù)據(jù)的部分,先用MOV指令將3F8h傳送到DX中,再用IN指令從DX讀入數(shù)據(jù)到AL中,因為題目要求對入一個字節(jié),所以讀入到AL中即可。程序編寫初始化部分讀入數(shù)據(jù)部分判斷數(shù)據(jù)部分輸出數(shù)據(jù)部分MOVDX,3F8HWAIT:INAL,DXMOV指令將3F8h傳送到DX中IN指令從DX讀入數(shù)據(jù)到AL中下面來填寫判斷的部分,將AL跟02H相與,如果結(jié)果為零,就重新讀入數(shù)據(jù),如果結(jié)果不為0,就繼續(xù)執(zhí)行。程序編寫初始化部分讀入數(shù)據(jù)部分判斷數(shù)據(jù)部分輸出數(shù)據(jù)部分MOVDX,3F8HWAIT:INAL,DXANDAL,02HJZWAIT相與結(jié)果為0,重新讀入數(shù)據(jù)結(jié)果不為0,繼續(xù)執(zhí)行這里的JZ是跳轉(zhuǎn)指令,判斷運算結(jié)果是否為0,如果為0的話,就跳轉(zhuǎn)到WAIT的位置,開始執(zhí)行。如果運算結(jié)果不為0,就繼續(xù)執(zhí)行下一條指令程序編寫初始化部分讀入數(shù)據(jù)部分判斷數(shù)據(jù)部分輸出數(shù)據(jù)部分MOVDX,3F8HWAIT:INAL,DXANDAL,02HJZWAIT跳轉(zhuǎn)指令結(jié)果為0,跳轉(zhuǎn)到WAIT位置,開始執(zhí)行
結(jié)果不為0,繼續(xù)執(zhí)行下一條指令下面來填寫輸出的部分,用MOV指令將38Fh傳送到DX中,再用MOV指令DATA開始的兩個連續(xù)單元的內(nèi)存?zhèn)魉偷紸X中,最后用OUT指令將AX的內(nèi)容輸出到DX指示的端口中。程序編寫初始化部分讀入數(shù)據(jù)部分判斷數(shù)據(jù)部分
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 墻面開槽施工方案
- 開化隧道施工方案
- 信息技術(shù) 第二冊(五年制高職)課件 9.2.5 計算機視覺技術(shù)的安全隱患
- 住宅老舊電梯更新改造工作指南匯報- 中國電梯協(xié)會
- 工程建設(shè)隱患排查指南
- 小班美術(shù)蝴蝶課件
- 護理成果匯報
- 2025屆寧夏銀川市、石嘴山市高三學(xué)科教學(xué)質(zhì)量檢測(一模)數(shù)學(xué)試題(解析版)
- 人員管理崗年終總結(jié)
- 2024年中醫(yī)藥知識競賽題庫
- 語文高考題小說說題比賽
- 欽州卓達生物能源有限公司年產(chǎn)1500噸木炭項目環(huán)境影響報告表
- 汽車修理廠維修結(jié)算清單
- 普通心理學(xué)第六版PPT完整全套教學(xué)課件
- 醫(yī)療保險學(xué)(周綠林-李紹華主編)課件PPT模板
- 個人身份信息保密協(xié)議書
- 達斡爾民族服飾課件
- 公路工程工地試驗室自校表格大全
- Unit 4 Reading and Thinking 教學(xué)設(shè)計 高中英語人教版(2019)選擇性必修第三冊
- 穴位按摩開天門
- 教師職業(yè)道德教育與心理教育相結(jié)合的新探索--基于師德培訓(xùn)的實效性
評論
0/150
提交評論