欧美精品一二区,性欧美一级,国产免费一区成人漫画,草久久久久,欧美性猛交ⅹxxx乱大交免费,欧美精品另类,香蕉视频免费播放

《計(jì)算機(jī)原理》8套習(xí)題及答案自學(xué).doc

上傳人:小** 文檔編號:13265538 上傳時(shí)間:2020-06-11 格式:DOC 頁數(shù):45 大?。?.06MB
收藏 版權(quán)申訴 舉報(bào) 下載
《計(jì)算機(jī)原理》8套習(xí)題及答案自學(xué).doc_第1頁
第1頁 / 共45頁
《計(jì)算機(jī)原理》8套習(xí)題及答案自學(xué).doc_第2頁
第2頁 / 共45頁
《計(jì)算機(jī)原理》8套習(xí)題及答案自學(xué).doc_第3頁
第3頁 / 共45頁

下載文檔到電腦,查找使用更方便

5 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《《計(jì)算機(jī)原理》8套習(xí)題及答案自學(xué).doc》由會員分享,可在線閱讀,更多相關(guān)《《計(jì)算機(jī)原理》8套習(xí)題及答案自學(xué).doc(45頁珍藏版)》請?jiān)谘b配圖網(wǎng)上搜索。

1、習(xí)題1: 1. 微機(jī)基本結(jié)構(gòu)是什么?微處理器、微型計(jì)算機(jī)、微型計(jì)算機(jī)系統(tǒng)有何區(qū)別? 2. 用二進(jìn)制補(bǔ)碼表示-41、+74、-112? 3. 數(shù)值轉(zhuǎn)換:114.175= ( ) 2=( )16 11001.101B= ( )16= ( )10 4. 計(jì)算機(jī)內(nèi)有一個(gè)字節(jié)代碼10110110B (1) 若把它作為無符號數(shù),則與之對應(yīng)的十進(jìn)制是( ); (2) 若把它作為有符號補(bǔ)碼,則與之對應(yīng)的十進(jìn)制是( ); (3) 若把它作為AS

2、CII碼,而且最高位為奇偶校驗(yàn)位,則采用的是奇校驗(yàn)還是偶校驗(yàn)?該值是什么字符的ASCII碼?ASCII碼主要用于做什么? (4) 若把它作為非壓縮BCD碼,則對應(yīng)的十進(jìn)制數(shù)為( )? 注:奇、偶校驗(yàn)的概念 l 校驗(yàn)位與數(shù)值位中1的個(gè)數(shù)為偶數(shù),則是偶校驗(yàn) l 校驗(yàn)位與數(shù)值位中1的個(gè)數(shù)為奇數(shù),則是奇校驗(yàn) (5) 8086中PF標(biāo)志對運(yùn)算結(jié)果的低8位進(jìn)行校驗(yàn),請問采用的是奇校驗(yàn)還是偶校驗(yàn)? 5. 在計(jì)算機(jī)中有符號字節(jié)數(shù)X=20H, Y=90H,請問X+Y=?結(jié)果是否有溢出;X-Y=?結(jié)果是否有溢出。 6. 計(jì)算機(jī)中有符號數(shù)如何表示,一個(gè)字的有符號數(shù)范圍是多少? 7. 什么是

3、總線,微機(jī)中按什么原則來使用總線? 8. 總線按照功能分為那幾類總線?按照在計(jì)算機(jī)中所處的位置又分為那幾類總線?ISA、EISA、PCI三種局部總線有何特點(diǎn)? 9. 計(jì)算機(jī)總線連接時(shí)為什么需要使用三態(tài)電路和鎖存器? 選作題: 10. CISC架構(gòu)的計(jì)算機(jī)與RISC架構(gòu)的計(jì)算機(jī)有何區(qū)別? 11. 浮點(diǎn)數(shù)在計(jì)算機(jī)中以何種格式進(jìn)行存儲?請舉例說明 習(xí)題1答案: 1. 微機(jī)的基本結(jié)構(gòu)包括主機(jī)和外設(shè),主機(jī)又包括CPU、存儲器、I/O接口和總線,外設(shè)包括輸入設(shè)備和輸出設(shè)備; 微處理器主要指CPU;微型計(jì)算機(jī)包括主機(jī)和外設(shè),其中主機(jī)包括微處理器,主要針對硬件部分;微型計(jì)算機(jī)系統(tǒng)包括微型

4、計(jì)算機(jī)和軟件系統(tǒng),能夠獨(dú)立運(yùn)行。 2. -41 = (11010111)2 +74 = (01001010)2 -112 = ( 10010000 )2 3. 數(shù)值轉(zhuǎn)換:114.175= ( 0111 0010. 0011 ) 2=( 72.3 )16 (近似值) 11001.101B= ( 19.A )16= ( 25.625 )10 4. 182;-74;奇校驗(yàn),‘6’,ASCII用于計(jì)算機(jī)與外部交換信息;6;奇校驗(yàn) 5 . X + Y 00100000 + 100

5、10000 = 10110000 結(jié)果不溢出 X – Y 00100000 - 10010000 = 10010000 結(jié)果溢出 6.計(jì)算機(jī)中有符號數(shù)用補(bǔ)碼表示,一個(gè)字的范圍是-32768 ~ 32767 7. 總線是用于傳輸信息的一組通信線;微機(jī)中按照分時(shí)復(fù)用原則使用總線; 8. 按照功能分為:地址總線、數(shù)據(jù)總線和控制總線; 按照位置分為:CPU總線、局部總線、系統(tǒng)總線和外部總線 ISA總線 寬度為16位,頻率為8MHz,傳輸率為16MB/S EISA總線

6、是ISA總線的增強(qiáng),寬度32位,頻率8MHz,傳輸率為32MB/s PCI總線 總線寬度32位,可擴(kuò)展到64位,總線頻率33MHz,也可提高到66MHz,傳輸率為132MB/s,可擴(kuò)展到528MB/s,支持即插即用 9. 使用三態(tài)門可以增加驅(qū)動,用作數(shù)據(jù)輸入到總線時(shí)的緩沖,當(dāng)需要總線時(shí),打開三態(tài)門,傳送數(shù)據(jù);不需要總線時(shí),關(guān)閉三態(tài)門,輸出為高阻狀態(tài),以便別的器件可以使用總線,因此多個(gè)器件接入總線時(shí),一定要使用三態(tài)電路; 使用D觸發(fā)器可以進(jìn)行信號保持,用作信息輸出時(shí)的鎖存 習(xí)題2: 1. 在8086微處理器中執(zhí)行如下指令后,標(biāo)志寄存器中狀態(tài)標(biāo)志為何值? MOV DX, 6

7、E07H SUB DX, 800AH 2. 8086管理的最大存儲器空間和I/O端口空間是多少,寫出地址范圍?為什么8086對存儲器要采用分段管理? 3. 若程序執(zhí)行之前,CS=E000H和IP=FE60H,則該程序入口物理地址是多少?指向這個(gè)入口地址的CS和IP的值是唯一的嗎? 4. 請畫出8088最小模式下的總線連接電路?要求包含8282 、8284 、8286。(注意8086與8088處理器的三點(diǎn)區(qū)別) 5. 8086的RESET引腳是什么信號有效? 8086復(fù)位后各寄存器的值是多少?指令隊(duì)列的狀態(tài)是什么?CPU執(zhí)行的第一條指令物理地址是多少? 6. 8086/808

8、8可以響應(yīng)可屏蔽中斷和非可屏蔽中斷,可屏蔽中斷由_____引腳的____電平使申請有效,F(xiàn)LAG中的_____標(biāo)志可以控制CPU是否響應(yīng)這種中斷,可屏蔽中斷響應(yīng)時(shí),CPU使_____引腳為_____電平表明響應(yīng)中斷;非屏蔽中斷申請輸入端為_____引腳,該引腳是_____信號有效。 7. 8086 CPU在最小模式下M/IO高電平且RD低電平的可能操作為___(多選) (A) 取指令操作 (B) 從外設(shè)輸入數(shù)據(jù) (C) 向存儲器寫數(shù)據(jù) (D) 從存儲器讀數(shù)據(jù) 8. 8086微處理器中,數(shù)據(jù)段由段寄存器___指示,堆棧段由段寄存器___指示

9、,寄存器CS:IP總是指示____________地址,一般情況下,取出一個(gè)字節(jié)指令后,寄存器____會自動加1。在硬件上可以用___和___來改變IP的內(nèi)容,在軟件上可以通過_____和_____來改變IP的內(nèi)容。 9. 如圖所示,8086工作在最小模式,且AL = 80H,執(zhí)行MOV [1000H], AL指令過程中(假設(shè)DS = 0000H),請問1000H和80H兩個(gè)數(shù)分別在什么時(shí)候,出現(xiàn)在8086 CPU的那些引腳上? CLK M / IO A19~A16 BHE ALE WR DT / R DEN T1 T2 T3 T4 地址 地

10、址 數(shù)據(jù) AD15~AD0 S3 ~ S6 選作題: 1. 80386內(nèi)部包括那6個(gè)功能部件?80386有那三種工作方式? 2. 80386如何在8086的基礎(chǔ)上擴(kuò)展了數(shù)據(jù)寄存器和地址指針寄存器? 3. 80386有多少根地址線和數(shù)據(jù)線?其最大尋址范圍是多少?80386對存儲器如何采用分段和分頁管理? 4. 80386的虛擬存儲機(jī)制是什么樣的? 1. 8086微處理器內(nèi)部包括執(zhí)行單元EU和總線接口單元BIU,請簡要說明兩個(gè)部分主要功能是什么?請指出下列哪些部分屬于EU,哪些部分屬于BIU?(8分) 1)段寄存器CS、DS、ES、SS 2

11、)預(yù)取指令緩沖隊(duì)列 3)地址指針寄存器SP、BP、SI、DI 4)指令譯碼及控制 5)數(shù)據(jù)寄存器AX、BX、CX、DX 6)指令指針寄存器IP 7)20位物理地址加法器 8)總線接口控制電路 9)算術(shù)邏輯單元ALU 10)標(biāo)志寄存器FLAG 屬于EU的有 ______、______、______、______、______ 屬于BIU的有______、______、______、______、______ 2. 按照圖4-1連接,8088從存儲器讀取數(shù)據(jù),若DS=B000H,則執(zhí)行指令MOV AL, [E000H]時(shí),8088需要執(zhí)行以下

12、一系列處理,請標(biāo)明處理的先后順序。(6分) A. CPU發(fā)讀命令; B. BIU形成20位物理地址; C. BIU將系統(tǒng)數(shù)據(jù)總線上的數(shù)據(jù)送到CPU內(nèi)部總線,EU從內(nèi)部總線獲得數(shù)據(jù); D. EU計(jì)算得到有效地址,并傳送給BIU; E. 存儲器將被選中單元的內(nèi)容送系統(tǒng)數(shù)據(jù)總線; F. CPU輸出物理地址,經(jīng)鎖存后傳送到地址譯碼器,選擇相應(yīng)存儲器; 先后順序?yàn)椋篲____、_____、_____、_____、_____、_____。 5. 習(xí)題3: 1、8086系統(tǒng)中,請說明下列指令的源操作數(shù)的尋址方式是什么? 1)MOV AX, 1234H 2)MOV AX, [1

13、234H] 3)MOV AX, [BX] 4)MOV AX, 1234H[BX + SI] 5)MOVSB 6)IN AL, DX 2、請?jiān)谙卤碇挟嫵鱿铝袛?shù)據(jù)段以十六進(jìn)制表示的各單元值(表格中每個(gè)單元表示一個(gè)字節(jié)),并寫出變量var1, var2, var3的偏移地址和cnt的值。 0030H 低地址 高地址 data SEGMENT para ORG 30H var1 DB -2, ‘A’, 2 dup(‘23’) var2 DW -1 cnt EQU $-var1 var3 DW var2 dat

14、a ENDS 3、以下程序?qū)崿F(xiàn)將變量var進(jìn)行var*10+600的操作,并將計(jì)算結(jié)果保存在變量result中,當(dāng)程序執(zhí)行到地址M5的時(shí)候,請?jiān)谝韵卤砀裰挟嫵霎?dāng)前堆棧指針的位置和堆棧里的內(nèi)容(程序斷點(diǎn)可以用標(biāo)號,在堆棧中可用寄存器名代表保存的內(nèi)容,SS的內(nèi)容不用指定,表格的每個(gè)單元表示一個(gè)字)。(6分) 高地址 低地址 data segment var dw 1000 result dd ? data ends sseg segment stack db 100 dup(?) sseg ends

15、 code segment assume cs:code, ds:data, ss:ss_seg main proc far push ds mov ax, 0 push ax mov ax, data mov ds, ax mov ax, var M1: call Caculate M2: dw 10 M3: dw 600

16、 M4: lea bx, result mov [bx], ax mov [bx+2], dx ret main endp Caculate proc push bp mov bp, sp push si push bx mov bx, [bp+2] mov si, cs:[bx] mul si M5: add ax, cs:2[bx] adc dx, 0 add bx, 4 mov [bp+2], bx pop bx pop si pop bp ret

17、 Caculate endp code ends end main 4、問答題 1)若AL = 81H,則執(zhí)行指令CBW后AH的內(nèi)容為多少? 2)若BL = BEH,執(zhí)行下列指令序列,則每執(zhí)行一步,BL和CF的值為多少? SHL BL, 1 ;BL = _____, CF = ______ MOV CL, 2 SHR BL, CL ; BL = _____, CF = ______ OR BL, 80 SAR BL, 1 ; BL = _____, CF = ______ ROR

18、 BL,CL ; BL = _____, CF = ______ INC CL RCL BL, CL BL = _____, 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)NT 21H以后,SP的值變?yōu)槎嗌??堆棧段?個(gè)存儲單元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分別是多少? 5、請寫出程序段實(shí)現(xiàn)下列功能 例如:從160H端口讀取1個(gè)字節(jié) MOV

19、 DX, 160H IN AL, DX 1) 將一個(gè)8位數(shù)20H寫入到地址為20H的端口; 2) 若AL = 56H, BL = 57H,將這兩個(gè)壓縮格式BCD碼相加并將結(jié)果保存到存儲單元[2000H]中; 3) 將2個(gè)32位無符號數(shù)DAT1和DAT2相乘,結(jié)果保存在64位無符號數(shù)中,請編寫程序段。 4) 求數(shù)據(jù)段偏移地址為1000H開始的一個(gè)字符串的長度,字符串以ASCII碼0為結(jié)束符,長度要求包括結(jié)束符;(提示:初始化AL = 0 CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根據(jù)CX的值計(jì)算字符串長度) 習(xí)題3: 1、8

20、086系統(tǒng)中,請說明下列指令的源操作數(shù)的尋址方式是什么? 1)MOV AX, 1234H 立即數(shù)尋址 2)MOV AX, [1234H] 直接尋址 3)MOV AX, [BX] 寄存器間接尋址 4)MOV AX, 1234H[BX + SI] 相對基址變址尋址 5)MOVSB 數(shù)據(jù)串尋址 6)IN AL, DX I/O端口間接尋址 2、請?jiān)谙卤碇挟嫵鱿铝袛?shù)據(jù)段以十六進(jìn)制表示的各單元值(表格中每個(gè)單元表示一個(gè)字節(jié)),并寫出變量var1, var2, var3的偏移地址和cnt的值。 FEH 0030H 低地址 高地

21、址 data SEGMENT para 41H ORG 30H 32H var1 DB -2, ‘A’, 2 dup(‘23’) 32H 33H var2 DW -1 FFH 33H cnt EQU $-var1 FFH var3 DW var2 00H 36H data ENDS var1: 0030H var2:0036H var3:0038H cnt = 8 3、以下程序?qū)崿F(xiàn)將變量var進(jìn)行var*10+600的操作,并將計(jì)算結(jié)果保存在變量result中,當(dāng)程序執(zhí)行到地址M5的時(shí)候,請?jiān)谝韵卤砀裰?/p>

22、畫出當(dāng)前堆棧指針的位置和堆棧里的內(nèi)容(程序斷點(diǎn)可以用標(biāo)號,在堆棧中可用寄存器名代表保存的內(nèi)容,SS的內(nèi)容不用指定,表格的每個(gè)單元表示一個(gè)字)。(6分) DS 高地址 低地址 data segment M2 0 var dw 1000 BP result dd ? BX SI data ends sseg segment stack db 100 dup(?) sseg ends code segment assume cs:code, ds:data, ss:

23、ss_seg main proc far push ds mov ax, 0 push ax mov ax, data mov ds, ax mov ax, var M1: call Caculate M2: dw 10 M3: dw 600 M4: lea bx, result mov [bx], ax

24、 mov [bx+2], dx ret main endp Caculate proc push bp mov bp, sp push si push bx mov bx, [bp+2] mov si, cs:[bx] mul si M5: add ax, cs:2[bx] adc dx, 0 add bx, 4 mov [bp+2], bx pop bx pop si pop bp ret Caculate endp code ends end main 4、問答題 1)若AL = 81H

25、,則執(zhí)行指令CBW后AH的內(nèi)容為多少? AH = 0FFH 2)若BL = BEH,執(zhí)行下列指令序列,則每執(zhí)行一步,BL和CF的值為多少? SHL BL, 1 ;BL = __7CH___, CF = ___1___ MOV CL, 2 SHR BL, CL ; BL = __1FH___, CF = ___0___ OR BL, 80 SAR BL, 1 ; BL = __CFH___, CF = ___1___ ROR BL,CL ; BL = __F3H___, CF =

26、___1___ INC CL RCL BL, CL BL = __BFH___, CF = ___1___ 3)什么是短跳轉(zhuǎn)、近跳轉(zhuǎn)、遠(yuǎn)跳轉(zhuǎn)? 短跳轉(zhuǎn):段內(nèi)直接跳轉(zhuǎn),偏移量為-128~127 近跳轉(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)NT 21H以后,SP的值變?yōu)槎嗌伲慷褩6沃?個(gè)存儲單元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分別是多少? S

27、P = 0FFAH, (0FFFH) = 23H (0FFEH) = 45H (0FFDH) = B0H (0FFCH) = 00H (0FFBH) = 01H (0FFAH) = 00H 5、請寫出程序段實(shí)現(xiàn)下列功能 例如:從160H端口讀取1個(gè)字節(jié) MOV DX, 160H IN AL, DX 5) 將一個(gè)8位數(shù)20H寫入到地址為20H的端口; MOV AL, 20H OUT 20H, AL 6) 若AL = 56H, BL = 57H,將這兩個(gè)壓縮格式BCD碼相加并將結(jié)果保存到存儲單元[2000H]中;

28、 ADD AL, BL DAA MOV [2000H], AL 7) 將2個(gè)32位無符號數(shù)DAT1和DAT2相乘,結(jié)果保存在64位無符號數(shù)中,請編寫程序段。 DAT1 DD 12345678H DAT2 DD 9ABCDEFH RESULT DQ 0 MOV AX, word ptr DAT2 ;(DAT1)L * (DAT2)L MUL word ptr DAT1 MOV word ptr RESULT, AX MOV word ptr RESULT, DX ;保存結(jié)果 MOV AX, word ptr DAT2 MUL word ptr DAT1

29、+ 2 ;(DAT1)H * (DAT2)L ADD word ptr RESULT + 2, AX ADC word ptr RESULT + 4, 0 MOV AX, word ptr DAT2 + 2 ;(DAT1)L * (DAT2)H MUL word ptr DAT1 ADD word ptr RESULT + 2, AX ADC word ptr RESULT + 4, DX ADC word ptr RESULT + 6, 0 MOV AX, word ptr DAT2 + 2 ;(DAT1)H * (DAT2)H MUL word ptr DA

30、T1 + 2 ADD word ptr RESULT + 4, AX ADC word ptr RESULT + 6, DX 8) 求數(shù)據(jù)段偏移地址為1000H開始的一個(gè)字符串的長度,字符串以ASCII碼0為結(jié)束符,長度要求包括結(jié)束符;(提示:初始化AL = 0 CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根據(jù)CX的值計(jì)算字符串長度) MOV AX, DS MOV ES, AX MOV DI, 1000H MOV AL, 0 MOV CX, 0FFFFH CLD REPNZ SCASB NOT CX ;或者 MOV AX, 0FF

31、FFH ; SUB AX, CX ; MOV CX, AX ;此時(shí)CX中存放的就是字符串的長度 9) 習(xí)題3: 1. 從屏幕上輸入小寫字母,轉(zhuǎn)換為大寫字母并輸出 要求:程序具有可讀性、容錯(cuò)性 2. 編寫一子程序asc2bin,將ASCII轉(zhuǎn)換為二進(jìn)制數(shù) 要求: 輸入?yún)?shù):AL中存放需要轉(zhuǎn)換的ASCII 輸出參數(shù):AL中存放轉(zhuǎn)換后的二進(jìn)制數(shù)并返回 3. 內(nèi)存中存放8個(gè)16位有符號數(shù),求8個(gè)數(shù)值之和,并將結(jié)果存放在內(nèi)存變量SUM中 注:程序中應(yīng)用到字?jǐn)U展為雙字的指令CWD 4. 內(nèi)存中存放8個(gè)8位有符號數(shù),請按從大到小順序排列

32、 5. 內(nèi)存中有8個(gè)16位數(shù),請編寫程序?qū)?個(gè)數(shù)倒序排放 例:定義內(nèi)存中8個(gè)數(shù) buf dw 100, 3, 1, 20, 40, -2, 7, 10 程序運(yùn)行后,buf開始應(yīng)為:buf dw 10, 7, -2, 40, 20, 1, 3, 100 6. 從鍵盤輸入4位十進(jìn)制數(shù),然后以16進(jìn)制形式顯示在屏幕上. 例:鍵盤輸入:1024 屏幕上應(yīng)顯示:0400H 要求:鍵盤輸入和顯示結(jié)果時(shí)均應(yīng)有提示 7. 數(shù)據(jù)段從100H開始存放字符串str1,從200H開始存放str2,二者均以NULL字符為結(jié)束符,編寫程序?qū)tr2拷貝到str1末尾,形成一個(gè)完整字符串

33、 例: ORG 100H str1 db 0dh, 0ah, ‘Hello ’, 0 ORG 200H str2 db ‘Automation!’, 0 程序運(yùn)行后結(jié)果應(yīng)為: str1 db 0dh, 0ah, ‘Hello Automation!’, 0 8. 以10進(jìn)制形式顯示內(nèi)存中一有符號字節(jié)數(shù)據(jù) 例:var db 0ffH 屏幕應(yīng)顯示:The result is: -1 9. 將一個(gè)16位的無符號數(shù)var, 轉(zhuǎn)換為非壓縮格式BCD碼,存放在內(nèi)存中buf開始的單元中。(按高位在前、低位在后的順序存放) 選作題: 10. 內(nèi)存中從s

34、tr開始存放一字符串,結(jié)束符為NULL字符,請編寫程序統(tǒng)計(jì)該字符串中單詞的個(gè)數(shù) 例:str1 db 0dh, 0ah, ‘Hello world, welcome to DUT. CPU is central processing unit!’, 0h 統(tǒng)計(jì)’….’中的單詞個(gè)數(shù),結(jié)果為10 11 編寫程序用鍵盤1~7鍵,模擬7個(gè)音符,進(jìn)行鍵盤演奏! 注:需要對8253的定時(shí)器2和8255的PB口進(jìn)行初始化 習(xí)題4答案: 1. 從屏幕上輸入小寫字母,轉(zhuǎn)換為大寫字母并輸出 要求:程序具有可讀性、容錯(cuò)性 data segment para str1 db 0dh, 0ah, ‘P

35、lease input(a-z): $’ str2 db 0dh, 0ah, ‘The input is error!$’ str3 db 0dh, 0ah, ‘The result is: $’ data ends ss_seg segment stack dw 100 dup(0) ss_seg ends code segment para assume cs:code, ss:ss_seg, ds:data main proc far mov ax, data mov ds, ax main1: lea dx, str1 ;顯示提示信息

36、 mov ah, 9 int 21h mov ah, 1 ;輸入小寫字母 int 21h cmp al, ‘a(chǎn)’ ;判斷輸入字符是否為’a’~’z’ jb error cmp al, ‘z’ ja error jmp next error: lea dx, str2 ;顯示錯(cuò)誤提示信息 mov ah, 9 int 21h jmp main1 ;跳轉(zhuǎn),重新輸入 next: sub al, 20h push ax lea dx, str3 ;顯示輸出提示信息 mo

37、v ah, 9 int 21h pop ax mov dl, al ;顯示轉(zhuǎn)換后的大寫字母 mov ah, 2 int 21h mov ax, 4c00h ;返回操作系統(tǒng) int 21h main endp code ends end main 2. 編寫一子程序asc2bin,將ASCII轉(zhuǎn)換為二進(jìn)制數(shù) 要求: 輸入?yún)?shù):AL中存放需要轉(zhuǎn)換的ASCII 輸出參數(shù):AL中存放轉(zhuǎn)換后的二進(jìn)制數(shù)并返回 ;功能:將ASCII轉(zhuǎn)換為二進(jìn)制數(shù) ;輸入?yún)?shù):AL中存放需要轉(zhuǎn)換的ASCII ;輸出參數(shù):AL中存

38、放轉(zhuǎn)換后得到的二進(jìn)制數(shù) asc2bin proc sub al, 30h cmp al, 9 jbe asc2bin_1 sub al, 7 asc2bin_1: ret asc2bin endp 3. 內(nèi)存中存放8個(gè)16位有符號數(shù),求8個(gè)數(shù)值之和,并將結(jié)果存放在內(nèi)存變量SUM中 注:程序中應(yīng)用到字?jǐn)U展為雙字的指令CWD data segment para buf dw -1, 30000, 35000, 36000, 37000, 20000, 10000, -2 sum dd 0 data ends ss_seg segment stac

39、k dw 100 dup(0) ss_seg ends code segment para assume cs:code, ds:data, ss:ss_seg main proc far mov ax, data mov ds, ax lea bx, buf ;bx指向buf首地址 mov cx, 8 main1: mov ax, [bx] cwd ;有符號數(shù)字?jǐn)U展為雙字 add word ptr sum, ax ;32位數(shù)相加 adc word ptr sum + 2, dx inc bx

40、 inc bx loop main1 ;循環(huán)8次 mov ax, 4c00h int 21h main endp code ends end main 4. 內(nèi)存中存放8個(gè)8位有符號數(shù),請按從大到小順序排列 data segment para buf db -1, 30, 35, 36, 37, 20, 100, -2 data ends ss_seg segment stack dw 100 dup(0) ss_seg ends code segment para assume cs:code, ds:data,

41、ss:ss_seg main proc far mov ax, data mov ds, ax mov cx, 8 main1: mov bx, 0 ;外循環(huán) mov di, 0 push cx main2: mov al, buf[bx] ;內(nèi)循環(huán) cmp al, buf[bx+1] jge next xchg al, buf[bx+1] ;不符合規(guī)則, 則交換數(shù)據(jù) mov buf[bx], al mov di, 1 next: inc bx loop main2 pop cx

42、 cmp di, 0 ;判斷內(nèi)循環(huán)是否發(fā)生數(shù)據(jù)交換 jz exit loop main1 exit: mov ax, 4c00h int 21h main endp code ends end main 5. 內(nèi)存中有8個(gè)16位數(shù),請編寫程序?qū)?個(gè)數(shù)倒序排放 例:定義內(nèi)存中8個(gè)數(shù) buf dw 100, 3, 1, 20, 40, -2, 7, 10 程序運(yùn)行后,buf開始應(yīng)為:buf dw 10, 7, -2, 40, 20, 1, 3, 100 data segment para buf dw -1, 300

43、00, 35000, 36000, 37000, 20000, 10000, -2 data ends ss_seg segment stack dw 100 dup(0) ss_seg ends code segment para assume cs:code, ds:data, ss:ss_seg main proc far mov ax, data mov ds, ax mov bx, 0 mov cx, 8 main1: push buf[bx] inc bx inc bx loop main1 ;8個(gè)數(shù)依

44、次入堆棧 lea bx, buf mov cx, 8 main2: pop buf[bx] inc bx inc bx loop main2 ;8個(gè)數(shù)依次出棧 mov ax, 4c00h int 21h main endp code ends end main 6. 從鍵盤輸入4位十進(jìn)制數(shù),然后以16進(jìn)制形式顯示在屏幕上. 例:鍵盤輸入:1024 屏幕上應(yīng)顯示:0400H 要求:鍵盤輸入和顯示結(jié)果時(shí)均應(yīng)有提示 data segment para buf db 4 dup(0) var dw 0

45、 str1 db 0dh, 0ah, ‘Please input four numbers(0-9): $’ str2 db 0dh, 0ah, ‘The input is error, please try again. $’ str2 db 0dh, 0ah, ‘The hex result is: $’ data ends ss_seg segment stack dw 100 dup(0) ss_seg ends code segment para assume cs:code, ds:data, ss:ss_seg main proc far

46、 mov ax, data mov ds, ax main1: lea dx, str1 ;顯示數(shù)據(jù)輸入提示信息 mov ah, 9 int 21h mov bx, 0 mov cx, 4 ;循環(huán)輸入4個(gè)數(shù) main2: mov ah, 1 ;DOS功能調(diào)用,輸入數(shù)據(jù) int 21h cmp al, ‘0’ ;判斷輸入字符是否為’0’-‘9’ jb error cmp al, ‘9’ ja error ;若不為’0’-‘9’,則進(jìn)行錯(cuò)誤處理 sub al, 30h ;A

47、SCII轉(zhuǎn)換為二進(jìn)制,得到0-9 mov al, buf[bx] ;存入buf開始的緩沖區(qū) inc bx loop main2 jmp next ;數(shù)據(jù)輸入正確后,跳轉(zhuǎn)到后續(xù)處理 error: lea dx, str2 ;顯示錯(cuò)誤提示信息 mov ah, 9 int 21h jmp main1 ;跳轉(zhuǎn)到重新輸入 next: mov ax, 0 ;(((0*10+B3)*10+B2)*10+B1)*10+B0 mov dx, 0 ;得到輸入的4位十進(jìn)制數(shù) mov si, 10 mov

48、bx, 0 mov cx, 4 main3: mul 10 ;相乘后dx仍然保持0 add al, buf[bx] adc ah, 0 inc bx loop main3 ;循環(huán)4次乘10 mov var, ax ;得到的4位十進(jìn)制數(shù)存放到var中 lea dx, str3 mov ah, 9 int 21h ;顯示輸出提示符 mov ch, 4 ;以16進(jìn)制顯示輸入的數(shù)據(jù), 循環(huán)4次 mov cl, 4 main4: rol var, cl ; 循環(huán)

49、左移4位 mov ax, var and ax, 000fh call bin2asc ;二進(jìn)制轉(zhuǎn)換為ASCII call pchar ;顯示16進(jìn)制 dec ch jnz main4 mov al, ‘H’ call pchar mov ax, 4c00h int 21h main endp ;功能: 將一個(gè)二進(jìn)制數(shù)轉(zhuǎn)換為ASCII ;輸入?yún)?shù): AL中存放要轉(zhuǎn)換的二進(jìn)制數(shù) ;輸出參數(shù): AL中存放轉(zhuǎn)換后的ASCII bin2asc proc and al, 0fh add al, 30h

50、 cmp al, 39h jbe bin2asc_1 add al, 07h bin2asc_1: ret bin2asc endp ;功能:顯示字符 ;輸入?yún)?shù):AL中存放要顯示字符的ASCII ;輸出參數(shù):無 pchar proc mov dl, al mov ah, 2 int 21h ret pchar endp code ends end main 7. 數(shù)據(jù)段從100H開始存放字符串str1,從200H開始存放str2,二者均以NULL字符為結(jié)束符,編寫程序?qū)tr2拷貝到str1末尾,形成一個(gè)完整字符串 例: ORG 100

51、H str1 db 0dh, 0ah, ‘Hello ’, 0 ORG 200H str2 db ‘Automation!’, 0 程序運(yùn)行后結(jié)果應(yīng)為: str1 db 0dh, 0ah, ‘Hello Automation!’, 0 data segment para ORG 100H str1 db 0dh, 0ah, ‘Hello ’, 0 ORG 200H str2 db ‘Automation!’, 0 data ends ss_seg segment stack dw 100 dup(0) ss_seg ends

52、 code segment para assume cs:code, ds:data, ss:ss_seg main proc far mov ax, data mov ds, ax mov es, ax lea di, str1 ;es:di指向str1首地址 mov al, 0 repnz scasb ;查找str1結(jié)束符NULL dec di ;找到str1結(jié)束符,并讓es:di指向該位置 lea si, str2 ;ds:si指向str2首地址 cld ;DF = 0 main1:

53、lodsb ;AL (ds:si), si = si + 1 stosb ;(es:di) AL, di = di + 1 cmp al, 0 ;判斷是否到str2的結(jié)束符 jnz main1 lea si, str1 ;ds:si指向拷貝后的str1首地址 main2: lodsb ;顯示拷貝后的str1字符串 cmp al, 0 jz exit call pchar jmp main2 exit: mov ax, 4c00h int 21h main endp ;功能

54、:顯示字符 ;輸入?yún)?shù):AL中存放要顯示字符的ASCII ;輸出參數(shù):無 pchar proc mov dl, al mov ah, 2 int 21h ret pchar endp code ends end main 8. 以10進(jìn)制形式顯示內(nèi)存中一有符號字節(jié)數(shù)據(jù) 例:var db 0ffH 屏幕應(yīng)顯示:The result is: -1 data segment para var db 7fh str1 db 0dh, 0ah, ‘The result is: ’ buf db 4 dup(‘ ’) db ‘$’ da

55、ta ends ss_seg segment stack dw 100 dup(0) ss_seg ends code segment para assume cs:code, ds:data, ss:ss_seg main proc far mov ax, data mov ds, ax mov buf, ‘+’ cmp var, 0 ;判斷var是正數(shù),還是負(fù)數(shù) jge next mov buf, ‘-‘ neg var ;若var為負(fù),則得到其相反數(shù) next: mov al, var mov cx,

56、3 mov dl, 10 lea bx, buf+3 main1: mov ah, 0 div dl ; (AX / 10)商 al add ah, 30h ; (AX / 10)余數(shù) ah mov [bx], ah dec bx loop main1 ;循環(huán)3次,分別得到百、十、個(gè)位 lea dx, str1 ;顯示10進(jìn)制數(shù) mov ah, 9 int 21h exit: mov ax, 4c00h int 21h main endp code ends end main

57、 9. 將一個(gè)16位的無符號數(shù)var, 轉(zhuǎn)換為非壓縮格式BCD碼,存放在內(nèi)存中buf開始的單元中。(按高位在前、低位在后的順序存放) data segment para var dw 800H buf db 5 dup(0) data ends ss_seg segment stack dw 100 dup(0) ss_seg ends code segment para assume cs:code, ds:data, ss:ss_seg main proc far mov ax, data mov ds, ax mov cx, 16

58、 ;((0*2 + B15)*2 + B14)*2 + … + )*2 + B0 main1: shl var, 1 ;得到var的Bi位 lea bx, 4 push cx mov cx, 5 main2: mov al, buf[bx] ;執(zhí)行buf*2 + Bi操作 adc al, al AAA 非壓縮格式BCD碼調(diào)整 mov buf[bx], al dec bx loop main2 ;內(nèi)循環(huán)為5次 pop cx loop main1 ;外循環(huán)為16次 exit: mo

59、v ax, 4c00h int 21h main endp code ends end main 選作題: 10. 內(nèi)存中從str開始存放一字符串,結(jié)束符為NULL字符,請編寫程序統(tǒng)計(jì)該字符串中單詞的個(gè)數(shù) 例:str1 db 0dh, 0ah, ‘Hello world, welcome to DUT. CPU is central processing unit!’, 0h 統(tǒng)計(jì)’….’中的單詞個(gè)數(shù),結(jié)果為10 11 編寫程序用鍵盤1~7鍵,模擬7個(gè)音符,進(jìn)行鍵盤演奏! 注:需要對8253的定時(shí)器2和8255的PB口進(jìn)行初始化 習(xí)題5: 1. 如圖4

60、-1所示,8088 CPU工作在最小模式,通過3片8282與系統(tǒng)地址總線相連,通過1片8286與系統(tǒng)數(shù)據(jù)總線相連,外擴(kuò)1片27256(32K8 EPROM)和1片62256(32K8 RAM),要求EPROM起始地址為B0000H,RAM地址范圍緊隨其后,使用74LS138,采用全地址譯碼方式。(14分) 1)寫出27256與62256的地址覆蓋范圍;(2分) 2) 請完成8088最小模式下總線連接圖,并畫出系統(tǒng)總線與存儲器連接圖,其中存儲器讀/MEMR信號和存儲器寫/MEMW信號,需要由8088 CPU的M/IO、/RD、/WR信號產(chǎn)生,連接時(shí)門電路自選。(12分) 圖4-1 存儲

61、器連接 G1 74LS138 G2A G2B C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 GND GND GND +5V WE 62256 OE D7 D0 D1 D2 D3 D4 D5 D6 CS A6 A0 A1 A2 A3 A4 A5 A14 A7 A8 A9 A10 A11 A12 A13 27256 OE D7 D0 D1 D2 D3 D4 D5 D6 CS A6 A0 A1 A2 A3 A4 A5 A14 A7 A8 A9 A10

62、 A11 A12 A13 A7 ~ A0 DIR B7 ~ B0 OE 8286 D7 D6 D5 D4 D3 D2 D1 D0 A0 A1 A2 A3 A4 A5 A6 A7 8282 OE Q7 ~ Q0 STB D7 ~ D0 D7 ~ D0 STB Q7 ~ Q0 OE 8282 A15 A14 A13 A12 A11 A10 A9 A8 D7 ~ D0 STB Q7 ~ Q0 OE 8282 A19 A18 A17 A16 8088 MN/MX

63、WR RD M/IO DEN DT/R AD7 ~ AD0 A15 ~ A8 ALE A19 ~ A16 BHE 習(xí)題5及答案:(存儲器擴(kuò)展) 1. 如圖4-1所示,8088 CPU工作在最小模式,通過3片8282與系統(tǒng)地址總線相連,通過1片8286與系統(tǒng)數(shù)據(jù)總線相連,外擴(kuò)1片27256(32K8 EPROM)和1片62256(32K8 RAM),要求EPROM起始地址為B0000H,RAM地址范圍緊隨其后,使用74LS138,采用

64、全地址譯碼方式。(14分) 1)寫出27256與62256的地址覆蓋范圍;(2分) BHE A19 ~ A16 ALE A15 ~ A8 AD7 ~ AD0 DT/R DEN M/IO RD WR MN/MX 8088 D7 ~ D0 STB Q7 ~ Q0 OE 8282 A19 A18 A17 A16 D7 ~ D0 STB Q7 ~ Q0 OE 8282 A15 A14 A13 A12 A11 A10 A9 A8 D7 ~ D0 STB Q7 ~ Q0 OE 8282 A

65、7 A6 A5 A4 A3 A2 A1 A0 A7 ~ A0 DIR B7 ~ B0 OE 8286 D7 D6 D5 D4 D3 D2 D1 D0 A13 A12 A11 A10 A9 A8 A7 A14 A5 A4 A3 A2 A1 A0 A6 CS D6 D5 D4 D3 D2 D1 D0 D7 OE 27256 A13 A12 A11 A10 A9 A8 A7 A14 A5 A4 A3 A2 A1 A0 A6 CS D6 D5 D4 D3 D2

66、 D1 D0 D7 OE 62256 WE +5V GND GND GND G1 74LS138 G2A G2B C B A Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 圖4-1 存儲器連接 2) 請完成8088最小模式下總線連接圖,并畫出系統(tǒng)總線與存儲器連接圖,其中存儲器讀/MEMR信號和存儲器寫/MEMW信號,需要由8088 CPU的M/IO、/RD、/WR信號產(chǎn)生,連接時(shí)門電路自選。(12分) 1) 27256地址覆蓋范圍B0000H~B7FFFH; 62256地址覆蓋范圍B8000H~BFFFFH 連接圖文字說明如下: 2) 總線連接 l 8088 MN/MX引腳接+5V;A19~A16引腳接第一片8282的D7~D0;A15~A8引腳連接第二片8282的D7~D0;AD7~AD0引腳同時(shí)連接到第三片8282的D7~D0,也連接到8286的A7~A0;DT/R引腳連接8286的DIR引腳,/DEN引腳連

展開閱讀全文
溫馨提示:
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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!