




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
微機(jī)原理及應(yīng)用第五章8086指令系統(tǒng)第四講帶進(jìn)位的加法指令和加一指令下面我們來學(xué)習(xí)帶進(jìn)位的加法指令和加一指令帶進(jìn)位的加法指令和加一指令首先來看帶進(jìn)位的加法指令,帶進(jìn)位的加法指令的操作碼是adc,它跟ADD的區(qū)別就是,它在求和的過程中,除了兩個(gè)加數(shù),還考慮了CF的值,請(qǐng)注意,CF標(biāo)志位隨時(shí)可能會(huì)被修改,所以在使用ADC這條指令的時(shí)候一定要注意CF的標(biāo)志位的可能狀態(tài)帶進(jìn)位加法指令操作碼ADC與ADD區(qū)別:求和過程,除2個(gè)加數(shù),還考慮CF值注意:CF標(biāo)志位隨時(shí)會(huì)被修改,使用ADC指令時(shí)注意CF標(biāo)志位可能狀態(tài)ADc操作數(shù)是字節(jié)也是字,被用于多字節(jié)加法運(yùn)算ADC操作數(shù)是字節(jié)也是字被用于多字節(jié)加法運(yùn)算ADC比如計(jì)算2個(gè)32位數(shù)運(yùn)算,不管add還是adc最多支持16位數(shù)運(yùn)算,把32位數(shù)分成低16和高16位分別運(yùn)算,計(jì)算高16位和時(shí),考慮低16位可能對(duì)高16位產(chǎn)生進(jìn)位,把CF狀態(tài)考慮進(jìn)來,這時(shí)用ADC指令計(jì)算2個(gè)32位數(shù),不管add還是adc最多支持16位數(shù)運(yùn)算32位數(shù)低16位高16位計(jì)算高16位和時(shí),考慮低16位對(duì)高16位產(chǎn)生進(jìn)位,把CF狀態(tài)考慮進(jìn)來,這時(shí)用ADC指令下面通過幾個(gè)例子來看一下,第一個(gè)是al跟立即數(shù)ABh相加,再加上cf的值帶借位減法指令A(yù)DCAL,0ABH;AL←[AL]+0ABH+[CF]第二個(gè)是ax和CX相加,再加上cf的值帶借位減法指令A(yù)DCAX,CX;AX←[AX]+[CX]+[CF]第三個(gè)是bx跟di指向的兩個(gè)連續(xù)的內(nèi)存單元的值相加再加上cf的值帶借位減法指令A(yù)DCBX,[DI];BX←[BX]+[DI+1:DI]+[CF]第三個(gè)是bx跟di指向的兩個(gè)連續(xù)的內(nèi)存單元的值相加再加上cf的值帶借位減法指令A(yù)DCBX,[DI];BX←[BX]+[DI+1:DI]+[CF]說明:用ADC代替ADD指令,在ADC中不考慮CF值,先將CF狀態(tài)置成0,可用CLC指令將CF狀態(tài)清0
沒有先將CF狀態(tài)清0,CF狀態(tài)不0,計(jì)算結(jié)果跟預(yù)期有出入兩4字節(jié)的無符號(hào)數(shù)2C56F8ACH+309E47BEH=?01我們通過這個(gè)例子來看一下ADC是如何用于多字節(jié)運(yùn)算的設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū)02因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此將兩數(shù)分成低字和高字分別相加03比如,我們要算兩個(gè)四個(gè)字節(jié)的無符號(hào)數(shù)的和,四個(gè)字節(jié)就是32位數(shù)32位數(shù)兩4字節(jié)的無符號(hào)數(shù)2C56F8ACH+309E47BEH=?01設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū)02因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此將兩數(shù)分成低字和高字分別相加03求和時(shí)將高16位和低16位分別計(jì)算,我們可以使用ADD求低16位的和,再用ADC求高16位的和,同時(shí)考慮了低16位可能對(duì)高16位產(chǎn)生的進(jìn)位32位數(shù)兩4字節(jié)的無符號(hào)數(shù)2C56F8ACH+309E47BEH=?01設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū)02因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此將兩數(shù)分成低字和高字分別相加03求和時(shí)將高16位和低16位分別計(jì)算,我們可以使用ADD求低16位的和,再用ADC求高16位的和,同時(shí)考慮了低16位可能對(duì)高16位產(chǎn)生的進(jìn)位32位數(shù)兩4字節(jié)的無符號(hào)數(shù)2C56F8ACH+309E47BEH=?01設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū)02因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此將兩數(shù)分成低字和高字分別相加03低16位高16位ADDADC同時(shí)考慮低16位對(duì)高16位產(chǎn)生進(jìn)位來看一下的題目32位數(shù)兩4字節(jié)的無符號(hào)數(shù)2C56F8ACH+309E47BEH=?01設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū)02因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此將兩數(shù)分成低字和高字分別相加03低16位高16位ADDADC題目中給出了兩個(gè)無符號(hào)數(shù),分別放在buffer1和buffer2中開始的四個(gè)連續(xù)的內(nèi)存單元中32位數(shù)兩4字節(jié)的無符號(hào)數(shù)2C56F8ACH+309E47BEH=?01設(shè)被加數(shù)、加數(shù)分別存放在BUFFER1及BUFFER2開始的兩個(gè)存儲(chǔ)區(qū)內(nèi),結(jié)果放回BUFFER1存儲(chǔ)區(qū)02因CPU只能進(jìn)行8位或16位的加法運(yùn)算,為此將兩數(shù)分成低字和高字分別相加03低16位高16位ADDADC我們來看一下代碼,首先,從buffer2開始的兩個(gè)連續(xù)的內(nèi)存單元中取出一個(gè)16位的數(shù)傳送到ax中,然后將ax與從buffer1開始的兩個(gè)連續(xù)的內(nèi)存單元的16位的數(shù)相加,將結(jié)果存放在buffer1開始的兩個(gè)連續(xù)的內(nèi)存單元中,到這一步為止,使用ADD計(jì)算低16位數(shù)和,在CF中產(chǎn)生進(jìn)位,被加數(shù)加數(shù)AX16位的數(shù)1.結(jié)果存放buffer1開始2個(gè)連續(xù)內(nèi)存單元2.用ADD計(jì)算低16位數(shù)和,CF產(chǎn)生進(jìn)位16位的數(shù)BUFFER1BUFFER2數(shù)據(jù)段ACHF8H56H2CHBEH47H9EH30H……下面兩條指令就是通過ADC計(jì)算高16位的和MOVAX,BUFFER2ADDBUFFER1,AX;低字相加MOVAX,BUFFER2+2ADCBUFFER1+2,AX;高字相加,包括低字的進(jìn)位首先,從buffer2+2開始的兩個(gè)連續(xù)的內(nèi)存單元中取出一個(gè)16位的數(shù)傳送到ax中,然后將ax與從buffer1+2開始的兩個(gè)連續(xù)的內(nèi)存單元的16位的數(shù)相加再加上CF的狀態(tài),得到高16位的和,并將結(jié)果存放在buffer1+2開始的兩個(gè)連續(xù)的內(nèi)存單元中MOVAX,BUFFER2ADDBUFFER1,AX;低字相加MOVAX,BUFFER2+2ADCBUFFER1+2,AX;高字相加,包括低字的進(jìn)位通過ADC計(jì)算高16位和,從buffer2+2開始兩個(gè)連續(xù)內(nèi)存單元中取一個(gè)16位數(shù)傳送ax中,將ax與從buffer1+2開始兩個(gè)連續(xù)的內(nèi)存單元的16位的數(shù)相加再加上CF狀態(tài),得高16位和,結(jié)果存放在buffer1+2開始兩個(gè)連續(xù)內(nèi)存單元中下面我們來看一下add和adc對(duì)標(biāo)志位的影響add和adc對(duì)標(biāo)志位的影響標(biāo)志位的修改主要是由計(jì)算結(jié)果引起的,求和運(yùn)算的結(jié)果會(huì)有正負(fù),可能會(huì)為零,可能會(huì)向有進(jìn)位,如果是有符號(hào)數(shù)的運(yùn)算也可能會(huì)溢出,所以,ADD和ADC的執(zhí)行會(huì)影響到SFZFCF和OF的狀態(tài),如果是無符號(hào)的相加,是否溢出看CF的狀態(tài),如果是有符號(hào)的相加,是否溢出看OF的狀態(tài)1有符號(hào)數(shù)運(yùn)算溢出0否則OF=1有向最高位的進(jìn)/借位0否則CF=標(biāo)志位修改主要由計(jì)算結(jié)果引起OF=1表示帶符號(hào)數(shù)相加溢出1結(jié)果為負(fù)0否則SF=1結(jié)果為00否則ZF=CF=1表示無符號(hào)數(shù)相加溢出ADC我們?cè)偻ㄟ^這個(gè)例子看一下運(yùn)算結(jié)果對(duì)標(biāo)志位的影響,這條指令相當(dāng)于是求D75Fh和8046h的和,我們可以運(yùn)算一下,然后看運(yùn)算的結(jié)果對(duì)標(biāo)志位的影響已知[BX]=D75FH指令A(yù)DDBX,8046H執(zhí)行后,狀態(tài)標(biāo)志各是多少?
D75FH=11010111010111118046H=1000000001000110
1111110101011110100101ADC首先,相加的運(yùn)算有進(jìn)位的,所以cf等于1,其次,結(jié)果不為0,所以zf等于0,再看,它只有最高位的進(jìn)位,沒有次高位的進(jìn)位,所以最高位的進(jìn)位位跟次高位的進(jìn)位位的異或結(jié)果為1,所以O(shè)F等于1,再看標(biāo)志位,標(biāo)志位是零,所以sf等于0,那再看它的低八位中一的個(gè)數(shù),數(shù)一下,一的個(gè)數(shù)是偶數(shù)個(gè),所以pf等于1,這是16位數(shù)和16位數(shù)的相加,我們看到低8位向高8位是沒有進(jìn)位的,所以af等于0,已知[BX]=D75FH指令A(yù)DDBX,8046H執(zhí)行后,狀態(tài)標(biāo)志各是多少?
D75FH=11010111010111118046H=1000000001000110
1111110101011110100101結(jié)果:C=1,Z=0,O=1,S=0,P=1,A=0下面我們來學(xué)習(xí)加一指令,加一指令的操作碼是INC,就是increase的簡(jiǎn)寫,increase是增加的意思加一指令操作碼是INC意思:增加increase的簡(jiǎn)寫因此加1指令就是對(duì)操作數(shù)進(jìn)行加一的運(yùn)算,因此,加一指令是單操作數(shù)的指令I(lǐng)NC對(duì)操作數(shù)進(jìn)行加一的運(yùn)算是單操作數(shù)的指令I(lǐng)NC也就是INC對(duì)操作數(shù)加1以后,將結(jié)果再存到這個(gè)操作數(shù)中,它的操作數(shù)既可以是寄存器也可以是存儲(chǔ)器操作數(shù),可以是八位的,也可以是16位的,但是它的操作數(shù)不能段寄存器,也不能是立即數(shù),這條指令的特點(diǎn)是它不會(huì)影響進(jìn)位標(biāo)志位,也就是說,即使INC是對(duì)FFH加一,其運(yùn)算的結(jié)果也不會(huì)影響cf這個(gè)標(biāo)志位OPRD+1→OPRD操作數(shù)是寄存器和存儲(chǔ)器操作數(shù)可以是8位或16位不能是段寄存器和立即數(shù)本指令不影響CF標(biāo)志下面來看幾個(gè)例子INCINCAX;AX+1→AXINCBL;BL+1→BLINCBYTEPTR[SI];[[SI]]+1→[[SI]]第一條指令是對(duì)AX進(jìn)行加一的運(yùn)算INCINCAX;AX+1→AXINCBL;BL+1→BLINCBYTEPTR[SI];[[SI]]+1→[[SI]]INCAX;AX+1→AX對(duì)AX加一運(yùn)算下一條指令是對(duì)bl進(jìn)行加一的運(yùn)算INCINCAX;AX+1→AXINCBL;BL+1→BLINCBY
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 甘肅省武威市第二十三中學(xué)2024年中考適應(yīng)性考試數(shù)學(xué)試題含解析
- 廣東省廣州市天河區(qū)暨南大附中2024年中考數(shù)學(xué)猜題卷含解析
- 2025年部門級(jí)安全培訓(xùn)考試試題含答案(考試直接用)
- 2024-2025新入職員工安全培訓(xùn)考試試題答案
- 2025員工安全培訓(xùn)考試試題及答案一套
- 2025年項(xiàng)目部管理人員安全培訓(xùn)考試試題含答案【輕巧奪冠】
- 2024-2025公司職工安全培訓(xùn)考試試題(5A)
- 25年企業(yè)員工崗前安全培訓(xùn)考試試題帶答案(培優(yōu)A卷)
- 2025新進(jìn)廠職工安全培訓(xùn)考試試題帶答案(模擬題)
- 2025年中國(guó)腕表行業(yè)市場(chǎng)規(guī)模及未來投資方向研究報(bào)告
- 家居建材全屋定制店面運(yùn)營(yíng)管理細(xì)則規(guī)定
- GB/T 27924-2011工業(yè)貨架規(guī)格尺寸與額定荷載
- 大班語言《他們看見了一只貓》課件
- 畢業(yè)論文-電力變壓器設(shè)計(jì)
- 消毒產(chǎn)品進(jìn)貨檢查驗(yàn)收制度
- 2021年信陽市羅山縣中醫(yī)院醫(yī)護(hù)人員招聘筆試試題及答案解析
- 單叉固定式液壓升降臺(tái)設(shè)計(jì)
- 《美國(guó)消費(fèi)品安全改進(jìn)法》的普通合格證書、紡織品服裝類產(chǎn)
- GB∕T 40740-2021 堆焊工藝評(píng)定試驗(yàn)
- 2022年新高考湖南化學(xué)高考真題(word版含答案)
- T∕CADERM 3035-2020 嚴(yán)重創(chuàng)傷院內(nèi)救治流程和規(guī)范
評(píng)論
0/150
提交評(píng)論