![計算機(jī)原理習(xí)題3(含答案)_第1頁](http://file4.renrendoc.com/view12/M0B/25/3B/wKhkGWdfkIWAbnM_AAHY8my8lWI857.jpg)
![計算機(jī)原理習(xí)題3(含答案)_第2頁](http://file4.renrendoc.com/view12/M0B/25/3B/wKhkGWdfkIWAbnM_AAHY8my8lWI8572.jpg)
![計算機(jī)原理習(xí)題3(含答案)_第3頁](http://file4.renrendoc.com/view12/M0B/25/3B/wKhkGWdfkIWAbnM_AAHY8my8lWI8573.jpg)
![計算機(jī)原理習(xí)題3(含答案)_第4頁](http://file4.renrendoc.com/view12/M0B/25/3B/wKhkGWdfkIWAbnM_AAHY8my8lWI8574.jpg)
![計算機(jī)原理習(xí)題3(含答案)_第5頁](http://file4.renrendoc.com/view12/M0B/25/3B/wKhkGWdfkIWAbnM_AAHY8my8lWI8575.jpg)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
習(xí)題3:
1.編寫程序段,將2個32位無符號數(shù)DAT1和DAT2相乘,結(jié)果保存在64位
無符號數(shù)Result中;
2.有2個4字節(jié)無符號數(shù)分別存放在擴(kuò)展段2000H和3000H開始的單元中,
低位在前,高位在后,將兩數(shù)相加,結(jié)果存放在數(shù)據(jù)段2000H開始的單元
中,請編寫程序段完成以上功能;
3.8086系統(tǒng)中,請說明下列指令的源操作數(shù)的尋址方式是什么?
1)MOVAX,1234H
2)MOVAX,[1234H]
3)MOVAX,[BX]
4)MOVAX,1234H[BX+SI]
5)MOVSB
6)INAL,DX
4.請在下表中畫出下列數(shù)據(jù)段以十六進(jìn)制表示的各單元值(表格中每個單元表
示一個字節(jié)),并寫出變量var1,var2,var3的偏移地址和ent的值。
dataSEGMENTpara—低地址
0030H
ORG30H
var1DB-2,'A',2dup('23')
var2DW-1
entEQU$-var1
var3DWvar2—
dataENDS
—高地址
5.以下程序?qū)崿F(xiàn)將變量var進(jìn)行var*10+600的操作,并將計算結(jié)果保存在變
量result中,當(dāng)程序執(zhí)行到地址M5的時候,請在以下表格中畫出當(dāng)前堆棧
指針的位置和堆棧里的內(nèi)容(程序斷點(diǎn)可以用標(biāo)號,在堆棧中可用寄存器名
代表保存的內(nèi)容,SS的內(nèi)容不用指定,表格的每個單元表示一個字)。(6
分)
datasegment高地址
vardw1000
resultdd?
dataends
ssegsegmentstack
db100dup(?)
ssegends
低地址
codesegment
assumecs:code,ds:data,ss:ss_seg
mainprocfar
pushds
movax,0
pushax
movax,data
movds,ax
movax,var
M1:callCaculate
M2:dw10
M3:dw600
M4:leabx,result
mov[bx],ax
mov[bx+2],dx
ret
mainendp
Caculateproc
pushbp
movbp,sp
pushsi
pushbx
movbx,[bp+2]
movsi,cs:[bx]
mulsi
M5:addax,cs:2[bx]
adcdx,0
addbx,4
mov[bp+2],bx
popbx
popsi
popbp
ret
Caculateendp
codeends
endmain
6.問答題
1)若AL=81H,則執(zhí)行指令CBW后AH的內(nèi)容為多少?
2)若BL=BEH,執(zhí)行下列指令序列,則每執(zhí)行一步,BL和CF的值為多少?
SHLBL,1;BL=_—,CF=______
MOVCL,2
SHRBL,CL;BL=_—,CF=______
ORBL,80
SARBL,1;BL=_—,CF=______
RORBL,CL;BL=,CF=
INCCL
RCLBL,CLBL=,CF=
3)什么是短跳轉(zhuǎn)、近跳轉(zhuǎn)、遠(yuǎn)跳轉(zhuǎn)?
4)若當(dāng)前SP=1000H,CS=B000H,IP=0100H,且當(dāng)前FLAG=2345H,
則執(zhí)行指令I(lǐng)NT21H以后,SP的值變?yōu)槎嗌伲慷褩6沃?個存儲單元
OFFFH、OFFEH、OFFDH、OFFCH.OFFBH、0FFAH的值分另1是多少?
7.請寫出程序段實(shí)現(xiàn)下列功能
例如:從160H端口讀取1個字節(jié)
MOVDX,160H
INAL,DX
1)將一個8位數(shù)20H寫入到地址為20H的端口;
2)若AL=56H,BL=57H,將這兩?個壓縮格式BCD碼相加并招結(jié)果
保存到存儲單元[2000H]中;
3)求數(shù)據(jù)段偏移地址為1000H開始的一個字符串的長度,字符串以
ASCII碼0為結(jié)束符,長度要求包括結(jié)束符;(提示:初始化AL=0
CX=0FFFFH,然后使用REPNZSCASB命令,最后根據(jù)CX的
值計算字符串長度)
8.請判斷以下8086匯編指令是否正確,:正確則在指令前打J,錯誤則打X
01)MOVDS,1000H018)LEA[1000H],MSG
02)MOVDX,1000H019)LDSES,MSG
03)MOVIP,AX020)LESDX,MSG
04)MOV[1000H],[SI]021)ADDDS,1000H
05)PUSH[SI]022)ADCDX,[DI]
06)PUSHAL023)SUB[BX],1000H
07)PUSH200H024)SUB[BX+BP],1000H
08)POPCS025)IMUL100H
09)POPAX026)DIVwordptr100H[BP]
010)XCHGAX,DS027)ANDBP,1001H
011)XCHGAX,1000H[SI+DI]028)SHL[BX],1
012)INAX,[SI]029)RORAX,4
013)INBL,80H030)RCLwordptr[BX],CL
014)INAX,160H031)SARdwordptr[BX],CL
015)INAL,DX032)MOVSW
016)OUTAL,DX033)REPN2:SCASB
()17)OUT80H,AL034)RETI
習(xí)題3答案:
9.將2個32位無符號數(shù)DAT1和DAT2相乘,結(jié)果保存在64位無符號數(shù)中,
請編寫程序段。
datasegmentpara
dat1dd12345678H
dat2dd9ABCDEF0H
resultdq0
dataends
ss_segsegmentparastack
dw100dup(0)
ss_segends
codesegmentpara
assumecs:code,ds:data,ss:ss_seg
mainprocfar
movax,data
movds,ax
leadi,dat1
leasi,dat2
leabx,result
movax,[si];取dat2的低16位
;dat1低*dat2低->{dx,ax}
mulwordptr[di]
mov[bx],ax;保存結(jié)果
mov[bx+2],dx
movax,[si];再次取dat2低16位
;dat1高*dat2低->{dx,ax}
mulwordptr[di+2]
add[bx+2],ax;保存結(jié)果
adc[bx+4],dx
adcwordptr[bx+6],0
movax,[si+2];Wdat2的高16位
;dat1低*dat2高->{dx,ax}
mulwordptr[di]
add[bx+2],ax
adc[bx+4],dx
adcwordptr[bx+6],0
movax,[si+2];再次取dat2的高16位
;dat1高*dat2高->{dx,ax}
mulwordptr[di+2]
add[bx+4],ax
adc[bx+6],dx
movax,4c00h
int21h
mainendp
codeends
endmain
X補(bǔ)充:將2個32位有符號數(shù)datal和data2相乘,結(jié)果保存在64位有符號
數(shù)中result中,請編寫完整匯編語言程序。
datasegmentpara
dataldd0FFFF8000H
data2dd0FFFF8000H
resultdq0
dataends
ss_segsegmentparastack
dw100dup(O)
ss_segends
codesegmentpara
assumecs:code,ds:data,ss:ss_seg
mainprocfar
movax,data
movds,ax
leasi,data2;si->data2
leadi,datal;di->datal
leabx,result;bx>>result
testwordptr[si+2],8000h;判斷data2是正數(shù)還是負(fù)數(shù)
jzmainl
movcl,1;cl=1,表明data2為負(fù)數(shù)
movax,0
movdx,0
subax,[si];求data2相反數(shù)
sbbdx,[si+2]
jmpmain2
mainl:
movcl,0;cl=0,表明data2為正數(shù)
movax,[si]
movdx,[si+2]
main2:
pushdx;data2絕對值入棧
pushax
testwordptr[di+2],8000h;判斷datal是正數(shù)還是負(fù)數(shù)
jzmain3
movch,1;ch=1,表明datal為負(fù)數(shù)
movax,0
movdx,0
subax,[di];求datal相反數(shù)
sbbdx,[di+2]
jmpmain4
main3:
movch,0;ch=0,表明datal為正數(shù)
movax,[di]
movdx,[di+2]
main4:
pushdx;data1絕對值入棧
pushax
callmuI_u32;按32位無符號數(shù)相乘,得到相應(yīng)結(jié)果
xorch,cl;ch為異或結(jié)果,若為o
惻datal*data2為正,否則為負(fù)
jzexit;結(jié)果若為正數(shù),則直接返回
movax,0;否則對result求補(bǔ)
movdx,0
subax,[bx]
sbbdx,[bx+2]
mov[bx],ax
mov[bx+2],dx
movax,0
movdx,0
sbbax,[bx+4]
sbbdx,[bx+6]
mov[bx+4],ax
mov[bx+6],dx
exit:
movax,4cOOh
int21h
mainendp
;功能:實(shí)現(xiàn)兩個32位無符號數(shù)相乘,利用堆棧傳遞參數(shù)
;輸入?yún)?shù):bx->result
;輸出參數(shù):result中存放乘積
mul_u32proc
pushibp
movbp,sp
movax,[bp+8];Wd2低16位
mulwordptr[bp+4];d1低16位*d2低16位->{dx,ax}
mov[bx],ax;保存結(jié)吳
mov[bx+2],dx
movax,[bp+8]
mulwordptr[bp+6];d1高16位*d2低16位->{dx,ax}
add[bx+2],ax;保存結(jié)昊
adc[bx+4],dx
adcwordptr[bx+6],0
movax,[bp+10];<d2高16位
mulwordptr[bp+4];d1低16位*d2高16位->{dx,ax}
add[bx+2],ax
adc[bx+4],dx
adcwordptr[bx+6],0
movax,[bp+10]
mulwordptr[bp+6];d1高16位*d2高16位->{dx,ax}
add[bx+4],ax
adc[bx+6],dx
popbp
ret8
mul_u32erdp
codeends
endmain
10.有2個4字節(jié)無符號數(shù)分別存放在擴(kuò)展段2000H和3000H開始的單元中,
低位在前,高位在后,將兩數(shù)相加,結(jié)果存放在數(shù)據(jù)段2000H開始的單元
中,請編寫程序段完成以上功能;
MOVAX,wordptrES:[2000H]
ADDAX,wordptrES:[3000H]
MOV[2000H],AX
MOVAX,wordptrES:[2002H]
ADCAX,wordptrES:[3002H]
MOV[2002H],AX
11.8086系統(tǒng)中,請說明下列指令的源操作數(shù)的尋址方式是什么?
1)MOVAX,1234H立即數(shù)尋址
2)MOVAX,[1234H]直接尋址
3)MOVAX,[BX]寄存器間接尋址
4)MOVAX,1234H[BX+SI]相對基址變址尋址
5)MOVSB數(shù)據(jù)串尋址
6)INAL,DXI/O端口間接尋址
12.請在下表中畫出下列數(shù)據(jù)段以十六進(jìn)制表示的各單元值(表格中每個單元表
示一個字節(jié)),并寫出變量var1,var2,var3的偏移地址和ent的值。
dataSEGMENTpara
0030HFEH
ORG30H
41H
var1DB-2,'A',2dup('23')32H
33H
var2DW-1
32H
entEOU$-var133H
FFH
FFH
36H
OOH
高地址
var3DWvar2
dataends
var1:0030Hvar2:0036Hvar3:0038Hent=8
13.以下程序?qū)崿F(xiàn)將變量var進(jìn)行var*10+600的操作,并將計算結(jié)果保存在變
量result中,當(dāng)程序執(zhí)行到地址M5的時候,請在以下表格中畫出當(dāng)前堆棧
指針的位置和堆棧里的內(nèi)容(程序斷點(diǎn)可以用標(biāo)號,在堆棧中可用寄存器名
代表保存的內(nèi)容,SS的內(nèi)容不用指定,表格的每個單元表示一個字)。(6
分)
datasegment
vardw1000
resultdd?高地址
dataendsDS
0
ssegsegmentstack
M2
db100dup(?)BP
SI
ssegends
BX
codesegment
assumecs:code,ds:data,ss:ss_seg
低地址
mainprocfar
pushds
movax,0
pushax
movax,data
movds,ax
movax,var
M1:callCaculate
M2:dw10
M3:dw600
M4:leabx,result
mov[bx],ax
mov[bx+2],dx
ret
mainendp
Caculateproc
pushbp
movbp,sp
pushsi
pushbx
movbx,[bp+2]
movsi,cs:[bx]
mulsi
M5:addax,cs:2[bx]
adcdx,0
addbx,4
mov[bp+2],bx
popbx
popsi
popbp
ret
Caculateendp
codeends
endmain
14.問答題
1)若AL=81H,則執(zhí)行指令CBW后AH的內(nèi)容為多少?AH=OFFH
2)若BL=BEH,執(zhí)行下列指令序列,則每執(zhí)行一步,BL和CF的值為多少?
SHLBL,1;BL=7cH,CF=[
MOVCL,2
SHRBL,CL;BL=1FH,CF=0
ORBL,80
SARBL,1;BL=2FH,CF=1
RORBL,CL;BL=CBH,CF=1
INCCL
RCLBL,CL;BL=5FH,CF=0
3)什么是短跳轉(zhuǎn)、近跳轉(zhuǎn)、遠(yuǎn)跳轉(zhuǎn)?
短跳轉(zhuǎn):段內(nèi)直接跳轉(zhuǎn),偏移量為T28727
近跳轉(zhuǎn):段內(nèi)直接跳轉(zhuǎn),偏移量為-32768~32767
遠(yuǎn)跳轉(zhuǎn):段間直接跳轉(zhuǎn)
4)若當(dāng)前SP=1000H,CS=B000H,IP=0100H,且當(dāng)前FLAG=2345H,
則執(zhí)行指令I(lǐng)NT21H以后,SP的值變?yōu)槎嗌??堆棧段?個存儲單元
OFFFH、OFFEH、OFFDH、0FFCH、OFFBH、0FFAH的值分別是多少?
SP=0FFAH,(0FFFH)=23H(0FFEH)=45H
(0FFDH)=BOH(0FFCH)=00H
(0FFBH)=01H(0FFAH)=00H
15.請寫出程序段實(shí)現(xiàn)下列功能
例如:從160H端口讀取1個字節(jié)
MOVDX,160H
INAL,DX
4)將一個8位數(shù)20H寫入到地址為20H的端口;
MOVAL,20H
OUT20H,AL
5)若AL=56H,BL=57H,將這兩個壓縮格式BCD碼相加并將結(jié)果
保存到存儲單元[2000H]中;
ADDAL,BL
DAA
MOV[2000H],AL
6)求數(shù)據(jù)段偏移地址為1000H開始的一個字符串的長度,字符串以
ASCII碼0為結(jié)束符,長度要求包括結(jié)束符;(提示:初始化AL=0
CX=0FFFFH,然后使用REP
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- Module2 Unit1 Whats your name(說課稿)-2024-2025學(xué)年外研版(一起)英語一年級上冊
- 2《吃水不忘挖井人》(說課稿)-2024-2025學(xué)年統(tǒng)編版(2024)語文一年級下冊
- 15《搭船的鳥》說課稿-2024-2025學(xué)年統(tǒng)編版語文三年級上冊
- 2023八年級數(shù)學(xué)上冊 第三章 位置與坐標(biāo)2 平面直角坐標(biāo)系第3課時 建立適當(dāng)?shù)钠矫嬷苯亲鴺?biāo)系求點(diǎn)的坐標(biāo)說課稿 (新版)北師大版
- 15堅持才會有收獲(說課稿)-部編版道德與法治二年級下冊
- 2023七年級道德與法治上冊 第二單元 友誼的天空 第五課 交友的智慧 第2框 網(wǎng)上交友新時空說課稿 新人教版
- 1假期有收獲 說課稿-2023-2024學(xué)年道德與法治二年級上冊 統(tǒng)編版
- 2025外墻紙皮磚合同
- 6的乘法口訣(說課稿)-2024-2025學(xué)年人教版數(shù)學(xué)二年級上冊
- Unit 3 Fascinating Parks Discover useful structures 說課稿-2024-2025學(xué)年高中英語人教版(2019)選擇性必修第一冊
- 建材材料合作合同范例
- 2025年集體經(jīng)濟(jì)發(fā)展計劃
- 病歷書寫規(guī)范細(xì)則(2024年版)
- 2024-2025學(xué)年人教版八年級上冊地理期末測試卷(二)(含答案)
- 雙方共同買車合同范例
- 醫(yī)務(wù)從業(yè)人員行為規(guī)范培訓(xùn)
- 中小學(xué)校食品安全管理現(xiàn)狀與膳食經(jīng)費(fèi)優(yōu)化方案
- 中醫(yī)外治法課件
- 第15屆-17屆全國中學(xué)生物理競賽預(yù)賽試卷含答案
- 道路運(yùn)輸企業(yè)主要負(fù)責(zé)人和安全生產(chǎn)管理人員安全考核題(公共部分題+專業(yè)部分題)及答案
- 外研版小學(xué)英語(三起點(diǎn))六年級上冊期末測試題及答案(共3套)
評論
0/150
提交評論