《匯編語言程序設(shè)計(jì)》作業(yè)習(xí)題_第1頁
《匯編語言程序設(shè)計(jì)》作業(yè)習(xí)題_第2頁
《匯編語言程序設(shè)計(jì)》作業(yè)習(xí)題_第3頁
《匯編語言程序設(shè)計(jì)》作業(yè)習(xí)題_第4頁
《匯編語言程序設(shè)計(jì)》作業(yè)習(xí)題_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

《匯編語言程序設(shè)計(jì)》作業(yè)習(xí)題第1章匯編語言基礎(chǔ)知識(shí)習(xí)題1.1什么是匯編語言?匯編語言的特點(diǎn)是什么?1.2把下列十進(jìn)制數(shù)轉(zhuǎn)換成二進(jìn)制數(shù)、八進(jìn)制數(shù)、十六進(jìn)制數(shù)。①127 ②1021 ③0.875 ④6.25把下列二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①1001.11 ②101011.10011 ③111.011 ④1011.11.4把下列八進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①573.06 ②75.23 ③431.7 ④123.451.5把下列十六進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)。①0D5.F4 ②8BA.7C③0B2E.3A ④6EC.2D1.6把下列英文單詞轉(zhuǎn)換成ASCII編碼的字符串。①Upper ②Blow ③Computer ④What1.7求下列帶符號(hào)十進(jìn)制數(shù)的8位基2碼補(bǔ)碼。①+127 ②?2 ③?128 ④+21.8求下列帶符號(hào)十進(jìn)制數(shù)的16位基2碼補(bǔ)碼。①+628 ②?9 ③?1234 ④+32491.9下列各數(shù)均為十進(jìn)制數(shù),請(qǐng)用8位二進(jìn)制補(bǔ)碼計(jì)算下列各題,并用十六進(jìn)制數(shù)表示其運(yùn)算結(jié)果。①68+(―53)②68―53③68―(―53)④(―68)―531.10漢字在輸入、存儲(chǔ)、輸出過程中所使用的漢字編碼是否一樣?使用的是什么編碼?第2章IBM-PC系統(tǒng)結(jié)構(gòu)習(xí)題2.1什么是微型計(jì)算機(jī)?微型計(jì)算機(jī)主要由哪幾部分組成?其主要功能是什么?2.28086/8088CPU由哪兩部分組成?它們的主要功能是什么?2.38086/8088CPU有哪些寄存器?各有什么用途?2.48086/8088CPU哪些寄存器可以用來指示存儲(chǔ)器地址?2.5標(biāo)志寄存器中有哪些狀態(tài)標(biāo)志和控制標(biāo)志?它們每一位所表示的含義是什么?2.6有兩個(gè)16位數(shù)3A4BH和10EFH分別存放在2000H和2004H存儲(chǔ)單元中,請(qǐng)用圖表示出它們?cè)诖鎯?chǔ)器里的存放情況。2.7一個(gè)存儲(chǔ)單元的物理地址、段地址、偏移地址三者之間有何關(guān)系?2.8在DEBUG程序中,一條指令語句表示為2000:0030MOVAL,8。請(qǐng)問:段地址、偏移地址和物理地址分別為多少?存放段地址和偏移地址的寄存器是哪兩個(gè)?第3章_80868088尋址方式和指令系統(tǒng)尋址方式和指令系統(tǒng)習(xí)題一、填空3.1指出下列指令源操作數(shù)的尋址方式: MOV AX,ARRAY[SI] ; MOV AX,ES:[BX] ; MOV AX,[100] ; MOV AX,[BX+DI] ; MOV AX,BX ; MOV AX,2000H ; MOV AX,ARRAY[BX][SI] ; MOV AX,[DI+20H] ;3.2假設(shè)(SP)=100H,(SS)=1000H,執(zhí)行PUSH BP指令后,棧頂?shù)奈锢淼刂肥恰?.3段地址和偏移地址為3FFFH:1234H,它的物理地址是,段地址和偏移地址為1000H:000FH,它的物理地址是。3.4若要測(cè)試AL寄存器中操作數(shù)的第0,3,4,7位是否均為0,然后根據(jù)測(cè)試結(jié)果實(shí)現(xiàn)條件轉(zhuǎn)移,可使用指令,以產(chǎn)生轉(zhuǎn)移條件。這條指令執(zhí)行后將影響的標(biāo)志位是。3.5現(xiàn)有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,下列指令執(zhí)行后AX寄存器的內(nèi)容: MOV AX,1200H ;(AX)= MOV AX,BX ;(AX)= MOV AX,[1200H] ;(AX)= MOV AX,[BX] ;(AX)= MOV AX,1100H[BX] ;(AX)= MOV AX,[BX][SI] ;(AX)= MOV AX,1100H[BX+SI] ;(AX)=3.6設(shè)(BX)=101H,(DS)=2100H,(CS)=1900H,內(nèi)存中(21101H)=0C7H,(21102H)=0FFH,(21103H)=00H,(21104H)=0F0H,執(zhí)行如下指令后CS和IP寄存器的值是多少? JMP BX ;(CS)=,(IP)= JMP [BX] ;(CS)=,(IP)= JMP WORDPTR[BX+1] ;(CS)=,(IP)= JMP DWORDPTR[BX] ;(CS)=,(IP)=3.7試根據(jù)以下要求寫出相應(yīng)的匯編語言指令。⑴把BX寄存器和DX寄存器內(nèi)容相加,結(jié)果存入DX寄存器中,匯編語言指令:;⑵用寄存器BX和SI的基址變址尋址方式把存儲(chǔ)器中的一個(gè)字節(jié)與AL寄存器的內(nèi)容相加,并把結(jié)果送到AL寄存器中。匯編語言指令:;⑶用寄存器BX和位移量0B2H的寄存器相對(duì)尋址方式把存儲(chǔ)器中的一個(gè)字和CX寄存器內(nèi)容相加,并把結(jié)果送回到存儲(chǔ)器中。匯編語言指令:;⑷用位移量為0524H的直接尋址方式把存儲(chǔ)器中的一個(gè)字與數(shù)2A59H相加,并把結(jié)果送回存儲(chǔ)單元中。匯編語言指令:;⑸把數(shù)0B5H與AL寄存器內(nèi)容相加,并把結(jié)果送回AL寄存器中。匯編語言指令:;3.8指令SAR可用來除2,而指令SHR可用來除2。3.9條件轉(zhuǎn)移指令的目標(biāo)地址應(yīng)在本條指令的下一條指令的個(gè)字節(jié)范圍內(nèi)。3.10執(zhí)行指令XOR AX,AX的含義是和。3.11一個(gè)有16個(gè)字的數(shù)據(jù)區(qū),它的起始地址為70A0H:DDF6H,那么該數(shù)據(jù)區(qū)的最后一個(gè)字單元的物理地址為H。3.12串處理指令規(guī)定源寄存器使用,源串在段中;目的寄存器使用,目的串必須在段中。3.13執(zhí)行加法指令時(shí),如果兩個(gè)操作數(shù)的符號(hào)相同,而結(jié)果的符號(hào)與之相反,則OF=;執(zhí)行減法指令時(shí),如果兩個(gè)操作數(shù)的符號(hào)相反,而結(jié)果的符號(hào)與減數(shù)相同,則OF=。3.14數(shù)據(jù)串傳送指令執(zhí)行前應(yīng)做、、、四項(xiàng)準(zhǔn)備工作。二、選擇題(可多選)3.15基址寄存器的內(nèi)容、變址寄存器的內(nèi)容以及指令中指定的位移量三者之和作為操作數(shù)的有效地址,它的尋址方式是。A、直接尋址方式 B、寄存器相對(duì)尋址方式C、基址變址尋址方式 D、相對(duì)基址變址尋址方式3.16完成將累加器AL清零,并使進(jìn)位標(biāo)志CF清零,下面錯(cuò)誤的指令是。A、MOVAL,00H B、ANDAL,00H C、XORAL,AL D、SUBAL,AL3.17指令TESTAL,02H的含義是。A、測(cè)試AL是否等于02H B、測(cè)試AL第二位的狀態(tài)C、測(cè)試AL第一位的狀態(tài) D、將AL的第一位和02單元的各位進(jìn)行測(cè)試3.188086CPU在執(zhí)行8位有符號(hào)數(shù)運(yùn)算后,產(chǎn)生溢出是結(jié)果超出了。A、0~255 B、+128~-128 C、+255~-256 D、+127~-1283.19不能改變8086程序計(jì)數(shù)指針I(yè)P的指令是。A、RET B、PUSHAX C、CALL D、JBE3.20不影響8086堆棧指針SP值的指令是。A、JMP B、PUSHAX C、POPCX D、INT21H3.218086中執(zhí)行指令RET04H表示。A、返回到04H單元 B、作段間返回C、返回到當(dāng)前地址后第4個(gè)單元 D、完成RET指令后SP加43.22下列不正確的指令是(DATA已定義)。A、MOV4[DI],02H B、MOVBYTEPTR4[DI],02HC、MOV4[DI],AL D、MOVDATA[DI],02H3.23假設(shè)V1和V2是用DW定義的變量,下列指令中正確的是。A、MOVV1,20H B、MOVV1,V2C、MOVAL,V1 D、MOV2000H,V23.24下列哪條指令不合法?A、INTAX,0278H B、RORDX,CL C、CMPSB D、RET43.25下列指令中,有語法錯(cuò)誤的是。A、MOV[SI],[DI] B、INAL,DXC、JMPWPRDPTR[BX] D、PUSHWORDPTR20[BX+SI-2]3.26下列4條指令中,是錯(cuò)誤的。A、MOVDS,2000H B、ADDDX,[BP]C、MOVAX,200 D、MOVAX,ARRAY[SI+2]3.27運(yùn)算型指令的尋址和轉(zhuǎn)移型指令的尋址,其不同點(diǎn)在于。A、前者取操作數(shù),后者決定程序的轉(zhuǎn)移地址B、后者取操作數(shù),前者決定轉(zhuǎn)移地址C、兩者都是取操作數(shù)D、兩者都是決定程序的轉(zhuǎn)移地址3.28下列指令中操作數(shù)在代碼段中的是。A、MOVAL,25H B、ADDBH,AL C、INCDS:[25H] D、CMPAL,BL3.29設(shè)(BL)=5,要使結(jié)果(BL)=0AH,應(yīng)執(zhí)行指令是。A、ANDBL,0FH B、NOTBL C、XORBL,0FH D、ORBL,0FH3.30指令JMPDWORDPTR[BX][SI]屬于尋址。A、寄存器間接尋址 B、相對(duì)基址變址尋址C、段內(nèi)轉(zhuǎn)移直接尋址 D、段間轉(zhuǎn)移間接尋址3.31在下列指令中,指令的執(zhí)行會(huì)影響條件碼的CF位。A、JMPNEXT B、JCNEXT C、INCBX D、SHLAX,13.32將累加器AX的內(nèi)容清零的正確指令是。A、ORAX,0 B、XORAX,AX C、TESTAX,AX D、CMPAX,AX三、簡答題3.33PUSH和POP指令有什么特點(diǎn)?3.34算術(shù)移位指令和邏輯移位指令有什么不同?3.35串處理指令有什么特殊規(guī)定?簡述REPZCMPSB指令的執(zhí)行過程。3.36完成下列操作,選用什么指令?⑴將AX的內(nèi)容減去0520H和上次運(yùn)算的借位;⑵將變量名TABL的段地址送AX;3.37條件轉(zhuǎn)移指令和無條件轉(zhuǎn)移指令有什么不同?第4章80868088匯編語言(格式)習(xí)題一、填空題4.1有關(guān)操作數(shù)的偽指令中,算術(shù)運(yùn)算符有,邏輯運(yùn)算符有,關(guān)系操作符有,數(shù)值運(yùn)算符有,屬性操作符。4.2下列兩個(gè)語句的區(qū)別在于,。 X1 EQU 1000H X2=1000H假設(shè) (DS)=3000HORG3100HTABLE DB 10,3*4,10HADDRESS DD TABLEARRAY DW 2DUP(675AH,?)寫出下列各單元的內(nèi)容。(3100H)= (3101H)= (3102H)=(3103H)= (3104H)= (3105H)=(3106H)= (3107H)= (3108H)=(3109H)= (310AH)= (310BH)=(310CH)= (310DH)= (310EH)=對(duì)于下面的數(shù)據(jù)定義,各條MOV指令單獨(dú)執(zhí)行后,請(qǐng)寫出相關(guān)寄存器的內(nèi)容。FLDBDB?

TABLEADW20DUP(?)

TABLEBDB'ABCD'(1)MOVAX,TYPEFLDB ;(AX)=

(2)MOVAX,TYPETABLEA ;(AX)=

(3)MOVCX,LENGTHTABLEA ;(CX)=(4)MOVDX,SIZETABLEA ;(DX)=

(5)MOVCX,LENGTHTABLEB ;(CX)=設(shè)X1、X2是兩個(gè)已經(jīng)賦值的變量,指令A(yù)ND AX,X1ANDX2中,兩個(gè)AND的區(qū)別是、。對(duì)于指令MOV BX,((XLT10H)AND40H)OR((XGE10H)AND50H),當(dāng)X<10H時(shí),匯編結(jié)果為MOV BX,,否則匯編結(jié)果為MOV BX,。數(shù)據(jù)定義語句BUF1 DW ?BUF2 EQU BYTEPTRBUF1當(dāng)匯編后,PTR類型操作符使BUF2具有與BUF1相同的和,但類型為。是過程定義結(jié)束偽指令,與配套使用。是段定義結(jié)束偽指令,與配套使用,是一個(gè)源模塊匯編結(jié)束偽指令。已知指令A(yù)RRAYDB2DUP(1DUP(?)),則該指令分配字節(jié)單元,指令MOVAX,LENGTHARRAY執(zhí)行后,AX=;指令MOVAX,SIZEARRAY執(zhí)行后,AX=。匯編程序產(chǎn)生二進(jìn)制的目標(biāo)文件OBJ,但OBJ還必須使用轉(zhuǎn)換成可直接執(zhí)行的EXE文件。在指令和偽指令中可直接使用“$”表示地址計(jì)數(shù)器的當(dāng)前值,ORG偽指令后給定的數(shù)值應(yīng)是一個(gè)。DB偽指令以為單位分配存儲(chǔ);DD偽指令以為單位分配存儲(chǔ)。故如下數(shù)據(jù)定義:X DB 4DUP(2),2COUNT EQU 10Y DDCOUNTDUP(?)為變量X分配個(gè)字節(jié)存儲(chǔ);為變量Y分配個(gè)字節(jié)存儲(chǔ)。數(shù)據(jù)段中有以下定義:ARRAY1 EQU 20HARRAY2 DW 20H指出下面兩條指令的源操作數(shù)尋址方式:MOV AX,ARRAY1 ;尋址方式MOV AX,ARRAY2 ;尋址方式根據(jù)下面的指令序列,CX寄存器中的值應(yīng)該是。X1 DW ‘AB’X2 DB 16DUP(?)CNT EQU $-X1…MOV CX,CNT4.15假設(shè)ES段中有一個(gè)字符串′12FG3LM5C′,其名為ARRAY,下面的程序段CLDLEA DI,ES:ARRAYMOV AL,′G′MOV CX,9REPNE SCASB執(zhí)行后CX的值是二、選擇題4.16表示源程序結(jié)束偽操作的格式為。A、ENDS[LABEL] B、END[LABEL] C、ENDS D、END4.17一般地,我們將計(jì)算機(jī)指令的集合稱為。A、機(jī)器指令 B、偽指令 C、宏指令 D、語句4.18在匯編語言程序設(shè)計(jì)中,偽指令OFFSET表達(dá)的含義是回送變量或標(biāo)號(hào)的。A、段地址值 B、偏移地址值 C、物理地址值 D、操作數(shù)4.19若定義DATDW‘A’,則DAT和DAT+1兩個(gè)相鄰的內(nèi)存單元中存放的數(shù)據(jù)是。A、00H41H B、41H00H C、XXH41H D、41HXXH(選項(xiàng)C、D中的XX表示任意數(shù)據(jù))4.20若定義DATDW‘AB’,則DAT和DAT+1兩個(gè)相鄰的內(nèi)存單元中存放的數(shù)據(jù)是。A、42H41H B、41H42H C、62H61H D、61H62H4.21表示一條指令的存儲(chǔ)單元的符號(hào)地址稱為。A、標(biāo)號(hào) B、變量 C、偏移量 D、類型4.22現(xiàn)用數(shù)據(jù)定義語句定義數(shù)據(jù):BUFDB4DUP(0,2DUP(1,0)),定義后存儲(chǔ)單元中有數(shù)據(jù)0100H的字單元個(gè)數(shù)是。A、4 B、3 C、8 D、124.23下列語句中有語法錯(cuò)誤的語句是。A、DB45H B、DW0ABCDH C、DW‘ABCD’ D、DD‘AB’三、判斷題4.24MOVBYTEPTR[BX],1000 ;4.25JMPFARPTRLAB;LAB是標(biāo)號(hào) ;4.25JLEFARPTRLAB;LAB是標(biāo)號(hào) ;4.27JMPDWORDPTR[BX+SI] ;4.28PUSHOFFSETVAL;VAL是DB定義的變量 ;4.29匯編語言程序中,符號(hào)地址和標(biāo)號(hào)必須先定義后使用 ;4.30在生成的可執(zhí)行文件中,偽指令是不存在的 ;4.31語句X=X-Y執(zhí)行后按照減法規(guī)則影響標(biāo)志位 ;4.32ADDAX,BX與ADCAX,BX得到的結(jié)果總是不同 ;4.33JNZ AAA ;第5章基本程序設(shè)計(jì)習(xí)題5.1簡述編制一個(gè)匯編語言程序的步驟。5.2簡述判斷匯編語言程序質(zhì)量的標(biāo)準(zhǔn)。5.3編寫程序,將DATA_NUM起的4個(gè)壓縮BCD碼轉(zhuǎn)換成十六進(jìn)制數(shù),并存放在DATA_NUM下面相鄰字節(jié)中。5.4試編寫一程序,用查表法將一位十六進(jìn)制數(shù)轉(zhuǎn)換成與之對(duì)應(yīng)的ASCII碼。程序的數(shù)據(jù)段如下:DATASEGMENTTABDB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HHEXDB6ASCDB?DATAENDS5.5試編程求解表達(dá)式S=(23000-(X*Y+Z))/Z,其中X=600,Y=25,Z=-2000。輸入輸出程序設(shè)計(jì)習(xí)題6.1用指令實(shí)現(xiàn)如下功能:(1)將一個(gè)字節(jié)輸出到端口43H。(2)將一個(gè)字節(jié)從48H端口輸入。(3)將一個(gè)在BUF單元的字節(jié)輸出到端口2F0H。(4)將一個(gè)字節(jié)從端口30H輸入,存到內(nèi)存ABC單元。(5)將一個(gè)字從020FH單元輸出。6.2中斷處理程序的典型結(jié)構(gòu)包括哪幾部分?6.3增加一個(gè)新的軟中斷,應(yīng)完成哪些操作?6.4CPU與外設(shè)問的數(shù)據(jù)傳送方式有哪幾種?它們各有什么特點(diǎn)?6.5類型號(hào)1DH的中斷向量在存儲(chǔ)器的哪些單元里?6.6內(nèi)存單元INT9開始放有一個(gè)中斷服務(wù)程序,它所對(duì)應(yīng)的中斷類型號(hào)為9。試編寫建立這一中斷向量的程序段。6.7根據(jù)本章講述的內(nèi)容,試分析下面一段程序?qū)崿F(xiàn)的功能。MOVAX,0MOVES,AXMOVDI,36H*4MOVAX,OFFSETINTBUFSTOSWMOVAX,CSSTOSW第6章80868088循環(huán)程序設(shè)計(jì)習(xí)題填空7.1下列程序完成的是將16位二進(jìn)制數(shù)轉(zhuǎn)換成4位16進(jìn)制數(shù)的ASCII碼,請(qǐng)完善程序。DATASEGMENT X DW 1234HCHAR DB 4DUP(0)DATAENDS…LEA DI,CHARMOV CH,4MOV BX,XL1:MOV CL,4 MOV AL,BLAND AL,0FHCMP AL,9ADD AL,7L2:ADD AL,30HMOV [DI],ALINC DIDEC CHHLT7.2以ARRAY為起始地址的字節(jié)表中存放著M個(gè)帶符號(hào)數(shù),找出其中的最大值和最小值,并分別送入到AH和AL中,請(qǐng)完善下列程序段。 …MOVSI,OFFSETARRAYMOVCX,MCLDMOVBH,[SI]MOVBL,BHL1:CMPAL,BHJLEL2MOVBH,AL L2:CMPAL,BLJGEL3MOV BL,ALL3: MOVAX,BXHLT7.3閱讀下列程序段,并完善程序和回答問題。XOR AX,AXMOV BX,1LOP:ADD AX,BXINC BXINC BXLOOP LOPHLT程序執(zhí)行到HLT時(shí),(AX)=,(BX)=。A、9 B、10 C、11 D、20 E、25 F、367.4以STR1為起始地址的字節(jié)存儲(chǔ)單元中存放著一個(gè)字符串,請(qǐng)統(tǒng)計(jì)該字符串中的每個(gè)字符含有“1”的個(gè)數(shù),并將結(jié)果保存到以STR2為起始地址的個(gè)字節(jié)存儲(chǔ)單元中。請(qǐng)完善程序。STR1DB'FABCDFGHYTRJHKL9'MEQU$-STR1STR2DBMDUP(0)…LEASI,STR1LEADI,STR2MOVCX,ML1:MOVAL,[SI]MOVDL,0L2:CMPAL,0SHRAL,1JNCL3L3:JMPL2L4:MOV[DI],DLINCSIINCDIHLT編程題7.5試編制一程序,要求從鍵盤上接收一個(gè)4位的16進(jìn)制數(shù),并在屏幕上顯示與它等值的二進(jìn)制數(shù)。7.6 試編制一程序,將一個(gè)包含有20個(gè)字?jǐn)?shù)據(jù)的數(shù)組ARRAY分成兩個(gè)數(shù)組,正數(shù)數(shù)組M和負(fù)數(shù)數(shù)組N。7.8 將30名學(xué)生的成績存入以GRADE為首地址的字節(jié)數(shù)組中。另一個(gè)數(shù)組RANK為30名學(xué)生的名次表。編寫一程序,根據(jù)GRADE中的學(xué)生成績,將學(xué)生的名次填入RANK數(shù)組中。7.9 已知數(shù)組A包含15個(gè)互不相等的整數(shù),數(shù)組B中包含20個(gè)互不相等的整數(shù)。試編一程序,將即在A中又在B中的整數(shù)存入數(shù)組C中。7.10從鍵盤輸入一系列字符串(以回車符結(jié)束),按字母、數(shù)字和其它字符分類計(jì)數(shù),最后顯示出這三類的計(jì)數(shù)結(jié)果。第7章8086、8088循環(huán)分支設(shè)計(jì)習(xí)題一、填空題8.1下面的程序是將10個(gè)8位的無符號(hào)數(shù)按遞減次序排序。請(qǐng)選擇正確的答案將程序填充完整。DATASEGMENTARRAYDB05H,78H,0FFH,7BH,00HDB8CH,20H,54H,7DH,19HNDB9DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAMAINPROCFARSTART:PUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXLAB1:LEASI,ARRAYMOVBL,0MOVCX,NAGAIN:MOVAL,[SI]INCSICMPAL,[SI](1)MOVAH,[SI]MOV[SI],ALMOV[SI-1],AHMOVBL,1LAB2:LOOPAGAIN(2)DECBL(3)RETMAINENDPCODEENDSENDSTART8.2閱讀下列程序段,并完善程序和回答問題。MOVCX,10XOR AX,AXMOV BX,1LOP:ADD AX,BXINC BXINC BXLOOP LOPHLT程序執(zhí)行到HLT時(shí),(AX)=,(BX)=。8.3以下程序用于計(jì)算符號(hào)函數(shù)。1 (X<0)Y=1 (X<0)Y=0 (X=0)-1 (X>0)的取值范圍為-128~+127。請(qǐng)完善下列程序。 ┇MOV AL,XCMP AL,0JZ EXITMOV AL,1NEG1: MOV AL,0FFHEXIT: MOV Y,AL二、簡答題8.4為什么說循環(huán)結(jié)構(gòu)是分支結(jié)構(gòu)的特例?8.5程序的基本邏輯結(jié)構(gòu)有哪5種?三、編程題8.6將3個(gè)連續(xù)存放的單字節(jié)無符號(hào)數(shù)按遞增次序重新存放在原存放位置。8.7根據(jù)鍵盤輸入的字符′A′~′E′(或′a′~′e′),分別顯示′ONE′,′TWO′、′THREE′,′FOUR′、′FIVE′,當(dāng)輸入其它字符時(shí),顯示′ERROR′,然后重新輸入。8.8試編制一程序,求出首地址為ARY的100個(gè)字?jǐn)?shù)組中的最小偶數(shù)和最大奇數(shù),并分別存放在BUF1和BUF2中。8.9已知數(shù)組A包含15個(gè)互不相等的整數(shù),數(shù)組B包含20個(gè)互不相等的整數(shù),試編制一程序?qū)⒓丛贏中又在B中出現(xiàn)的整數(shù)存放到數(shù)組C中。第9章子程序設(shè)計(jì)習(xí)題9.1定義子程序時(shí)如何確定其屬性?9.2已知:(CS)=0B9EH,(IP)=0100H,(BX)=0126H,子程序SUBA位于當(dāng)前段,其偏移地址為200H,子程序SUBB所在段的段地址為2C60H,其偏移地址為300H。求以下子程序調(diào)用指令轉(zhuǎn)移的物理地址。(1)CALLBX(2)CALLNEARPTRSUBA(3)CALLFARPTRSUBB9.3已知堆棧指針寄存器SP的內(nèi)容是0040H。請(qǐng)畫出下列每次調(diào)用和返回時(shí)堆棧和SP內(nèi)容的變化過程。(1)主程序MAIN段內(nèi)調(diào)用SUBA子程序,返回的偏移地址為0030H。(2)子程序SUBA段間調(diào)用SUBB子程序,返回的段地址為1000H,返回的偏移地址為0200H。(3)從SUBB返回SUBA。(4)子程序SUBA段內(nèi)調(diào)用SUBC子程序,返回的偏移地址為00B0H。(5)從SUBC返回SUBA。(6)從SUBA返回MAIN。9.4主程序和子程序之間的參數(shù)傳遞是如何實(shí)現(xiàn)的?9.5編寫一個(gè)子程序,計(jì)算無符號(hào)字?jǐn)?shù)組的累加和。無符號(hào)字?jǐn)?shù)組存放在首地址為ARRAY的單元中,長度存放在COUNT單元中,和存放于SUM單元中。假設(shè)和小于65536。9.6編寫一個(gè)子程序,把首地址為SRC的數(shù)據(jù)區(qū)存放的50個(gè)字?jǐn)?shù)據(jù)傳送到以DST為首地址的緩沖區(qū)去。9.7試分析例9.5程序執(zhí)行時(shí)堆棧的變化過程?9.8在以GRADE為首地址的數(shù)組中存放著某班某門課30個(gè)學(xué)生的成績。試編寫三個(gè)子程序分別實(shí)現(xiàn):(1)統(tǒng)計(jì)該班這門課的總分。(2)求該班這門課的平均成績。(3)統(tǒng)計(jì)小于60分,60~89分和大于等于90分的學(xué)生人數(shù)。9.9什么情況需要使用PUBLIC和EXTRN偽指令?試將9.8中的子程序改寫成子程序模塊。第10章數(shù)據(jù)運(yùn)算程序設(shè)計(jì)習(xí)題10.1自0500H單元開始,有10個(gè)無符號(hào)字節(jié)數(shù),編一個(gè)程序段求這10個(gè)數(shù)的和(用位數(shù)運(yùn)算指令),把和放到050AH及050BH單元中(和用兩個(gè)字節(jié)表示),且高字節(jié)在050BH單元。10.2在0100H單元和010AH單元開始,存放兩個(gè)各位10個(gè)字節(jié)的BCD數(shù)(地址最低處存放的是最低字節(jié)),編一個(gè)程序段求它們的和,且把和放在0200H開始的存儲(chǔ)單元中。10.3在0100H單元開始放有數(shù)A(低位在前)NA=67267921097385394715在010AH單元開始放有數(shù)BNB=53539019823022714092編一個(gè)程序段求兩數(shù)之差,且把差值送入自0100H開始的存儲(chǔ)區(qū)。10.4給定數(shù)N,0<N≤5,要求寫一個(gè)程序段計(jì)算出它的階乘并將結(jié)果保存在存儲(chǔ)器地址result處。(N!=1×2×3×…×N)10.5在數(shù)組ARRAY處存放著N個(gè)無符號(hào)字節(jié)數(shù),要求寫一個(gè)程序段求數(shù)組中前N個(gè)字節(jié)數(shù)的總和并保存在AX寄存器中。如果總和值超過AX寄存器的容量,則置AX寄存器內(nèi)容不變。10.6在MEM數(shù)據(jù)區(qū)中存放有一組無符號(hào)數(shù)據(jù),該數(shù)組中的每個(gè)數(shù)均是4位十進(jìn)制數(shù)(組合的BCD碼),存放在兩個(gè)字節(jié)中,請(qǐng)編程完成每個(gè)數(shù)據(jù)對(duì)應(yīng)位按二進(jìn)制數(shù)相加,結(jié)果分別存放在X1、X2、X3、X4各字節(jié)單元中。10.7設(shè)X,Y,R,S,Z均為16位無符號(hào)數(shù)據(jù)的單元符號(hào)地址。編一程序段求表達(dá)式:Z=(X+Y)/(R-S)的值。10.8設(shè)X,Y,R,S,Z均為16位無符號(hào)數(shù)據(jù)的單元符號(hào)地址,N為一個(gè)立即數(shù)。編一程序段求表達(dá)式:Z=((X-(Y*R+S-N))/Y的值。10.9請(qǐng)編程完成兩個(gè)無符號(hào)數(shù)的相乘,但采用重復(fù)相加的方法實(shí)現(xiàn)。10.10請(qǐng)編程利用除法指令實(shí)現(xiàn)2個(gè)無符號(hào)數(shù)相除:即一個(gè)64位數(shù)除以一個(gè)16位數(shù)(N1/N2,商為N3,余數(shù)為N4)。第11章高級(jí)匯編語言技術(shù)習(xí)題11.1設(shè)有以下宏定義FUNMACKOVl,V2LOCALNEGA,ZERO,OKPUSHAXMOVAL,V1CMPAL,0JSNEGAJZZEROMOVAL,1JMPOKNEGA:MOVAL,0FFHJMPOKZERO:MOVAL,0OK:MOVV2,ALPOPAXENDM若在源程序中進(jìn)行了兩次調(diào)用……FUNB_D1,B_D2……FUNB_D3,B_D4……試寫出后一次宏調(diào)用對(duì)應(yīng)的宏擴(kuò)展。11.2試用IRP及IRPC偽指令的重復(fù)匯編結(jié)構(gòu)實(shí)現(xiàn)【例11.11】中程序段的功能。11.3設(shè)源程序中有6個(gè)近標(biāo)號(hào),分別為BR0,BRl,…,BR5。試用重復(fù)匯編結(jié)構(gòu)定義一個(gè)由這6個(gè)標(biāo)號(hào)構(gòu)成的跳轉(zhuǎn)表。11.4定義一個(gè)宏指令,用以對(duì)1~3個(gè)有符號(hào)字節(jié)變量求取最小值。要求對(duì)不同的變量個(gè)數(shù)產(chǎn)生不同的宏擴(kuò)展。11.5定義一個(gè)宏指令FUNC,用于下列分段函數(shù)的計(jì)算。所作宏定義要保證宏調(diào)用時(shí)能根據(jù)自變量的不同取值范圍作不同的宏擴(kuò)展,以減少目標(biāo)代碼。x<-1-1≤x<-1-1≤x<4x≥4(x為使用EQU偽指令定義的字節(jié)有符號(hào)數(shù))x<-1-1≤x<4X≥4(x為使用四u偽指令定義的字節(jié)有符號(hào)數(shù))第12章BIOS和DOS中斷調(diào)用習(xí)題12.1分別利用DOS和BIOS中斷功能調(diào)用,將當(dāng)前的時(shí)間和日期設(shè)置為2008年8月8日20:08:00。12.2分別利用DOS和BIOS中斷功能調(diào)用,顯示機(jī)器當(dāng)前時(shí)間。12.3利用BIOS中斷功能調(diào)用從鍵盤上輸入字符,然后送顯示器顯示,并送打印機(jī)打印輸出,如果輸入字符是!,則退出程序。12.4編制一程序,要求在屏幕上顯示一個(gè)直角三角形,三邊分別為紅、黃、綠三種顏色。12.5編寫利用8253驅(qū)動(dòng)發(fā)聲的通用發(fā)聲子程序。12.6編寫出實(shí)現(xiàn)下列要求的指令序列:(1)設(shè)置屏幕為80×25文本顯示方式。(2)設(shè)置屏幕為藍(lán)底紅字。(3)把光標(biāo)定位在屏幕的中央(假設(shè)是80X25黑白文本顯示)。(4)設(shè)置屏幕為320×200圖形顯示方式并清屏。第13章混合編程習(xí)題13.1設(shè)C程序在小模式下調(diào)用ADD_NUM(x,y,z)匯編子程序,采用堆棧傳遞參數(shù),請(qǐng)畫出堆棧傳遞參數(shù)的示意圖。13.2.匯編子程序中有一外部變量var1供C程序引用,分別寫出在匯編程序和C程序中對(duì)此變量說明的語句。13.3有如下C語言聲明的外部子程序compare()完成字符串的比較功能,請(qǐng)編寫匯編程序?qū)崿F(xiàn)compare()的功能,在小模式(SMALL)下連接。externintcompare(char*str1,char*str2);其中str1和str2是兩個(gè)字符串,串結(jié)束標(biāo)志為“\0”,從串首開始比較,如果str1>str2則返回值為1;如果str1和str2相同則返回值0;如果str1<str2則返回值為-1。13.4回文是一種特殊的字符串,其特點(diǎn)是從頭到尾讀和從尾向頭讀的順序完全相同,如“12321”,“abcdcba”。編寫匯編程序?qū)崿F(xiàn)供C語言程序調(diào)用的外部子程序ishuiwen(),其功能是判斷給定字符串是否回文,如果是回文,則返回值為1;否則為0。

溫馨提示

  • 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. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論