匯編語言程序設(shè)計知識點_第1頁
匯編語言程序設(shè)計知識點_第2頁
匯編語言程序設(shè)計知識點_第3頁
匯編語言程序設(shè)計知識點_第4頁
匯編語言程序設(shè)計知識點_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

PAGE9匯編語言程序設(shè)計知識點第一章基礎(chǔ)知識(1)正負(fù)數(shù)的補碼表示,掌握計算機中數(shù)和字符的表示;1、假設(shè)機器字長為8位,[+3]補=00000011B,[-3]補=FDH。2、十六進(jìn)制數(shù)0F8H表示的十進(jìn)制正數(shù)為248,表示的十進(jìn)制負(fù)數(shù)為-8。3、8位二進(jìn)制數(shù)被看成是帶符號補碼整數(shù)時,其最小值是-128,最大值是127。4、計算機處理問題中會碰到大量的字符、符號,對此必須采用統(tǒng)一的二進(jìn)制編碼。目前,微機中普遍采用的是ASCII碼,稱為美國信息交換標(biāo)準(zhǔn)碼。第二章80x86計算機組織(1)中央處理機CPU的組成和80x86寄存器組,重點:專用寄存器,段寄存器1、IP寄存器中保存的是?下一條指令的首地址2、FLAGS標(biāo)志寄存器中共有幾位條件狀態(tài)位?6位3、有幾位控制狀態(tài)位?3位4、標(biāo)志寄存器分為哪2類?條件碼,控制5、哪個標(biāo)志位用來控制可屏蔽中斷請求是否被CPU響應(yīng)?IF6、鍵盤I/O、顯示I/O和打印I/O分別對應(yīng)16、10和17號中斷。(2)存儲單元的地址和內(nèi)容,存儲器地址的分段,實模式下邏輯地址、物理地址的表示。1、如果SS=6000H,說明堆棧段起始物理地址是60000H。2、已知字節(jié)(00018H)=14H,字節(jié)(00017H)=20H,則字(00017H)為1420H。3、如果數(shù)據(jù)段中一個內(nèi)存單元對應(yīng)的物理地址為3F756H,(DS)=3F00H,那么使用DS段寄存器指明該單元的段基值時,需要使用哪一個偏移量才能正確訪問該單元756H。4.如果(SI)=0088H,(DS)=5570H,對于物理地址為55788H的內(nèi)存字單元,其內(nèi)容為0235H,對于物理地址為5578AH的內(nèi)存字單元,其內(nèi)容為0E60H,那么執(zhí)行指令LDSSI,[SI]以后,(SI)=0235H,(DS)=0E60H.第三章80x86的指令系統(tǒng)和尋址方式(1)與數(shù)據(jù)有關(guān)的尋址方式(立即尋址方式,寄存器尋址方式,直接尋址方式,寄存器間接尋址方式,寄存器相對尋址方式,基址變址尋址方式,相對基址變址尋址方式)和與轉(zhuǎn)移地址有關(guān)的尋址方式(段內(nèi)直接尋址,段內(nèi)間接尋址,段間直接尋址,段間間接尋址).數(shù)據(jù)傳送指令(通用數(shù)據(jù)傳送指令、累加器專用傳送指令、輸入輸出指令)、算術(shù)指令(加法指令、減法指令(*加減指令對4個標(biāo)志位的影響[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作數(shù)必須是累加器)、除法指令(*被除數(shù)在累加器中,除法指令執(zhí)行完以后,商和余數(shù)在?))、邏輯指令(邏輯運算指令(*XOR,AND,OR,TEST指令及指令執(zhí)行后對標(biāo)志位的影響)、移位指令)、串處理指令(與REP相配合工作的MOVS、STOS、LODS指令,與REPE/REPZ和REPNE/REPNZ聯(lián)合工作的CMPS、SCAS指令)、控制轉(zhuǎn)移指令(無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、循環(huán)指令、子程序調(diào)用指令、中斷)。1、假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(1)MOV AX,0ABH 立即尋址操作數(shù)在指令中(2)MOV AX,BX 寄存器尋址操作數(shù)為(BX)=0100H(3)MOV AX,[100H] 直接尋址20100H(4)MOV AX,VAL 直接尋址20050H(5)MOV AX,[BX] 寄存器間接尋址20100H(6)MOV AX,ES:[BX] 寄存器間接尋址21100H(7)MOV AX,[BP] 寄存器間接尋址15010H(BP默認(rèn)段為SS)(8)MOV AX,[SI] 寄存器間接尋址200A0H(9)MOV AX,[BX+10] 寄存器相對尋址20110H(10)MOV AX,VAL[BX] 寄存器相對尋址20150H(11)MOV AX,[BX][SI] 基址變址尋址201A0H(12)MOV AX,VAL[BX][SI] 相對基址變址尋址201F0H2、假定(DS)=1000H,(SS)=2000H,(SI)=3000H,(BX)=0100H,(BP)=0200H,數(shù)據(jù)段中變量名為OVAR的偏移地址值為0050H,請指出下列源操作數(shù)的尋址方式是什么?其物理地址值是多少?1.MOVDX,[1000H] 直接尋址11000H2.MOBDX,[BX] 寄存器間接尋址10100H3.MOVDX,OVAR[BP] 寄存器相對尋址10250H4.MOVDX,[BX+SI] 寄存器相對尋址13100H5.MOVDX,OVAR[BX][SI] 相對基址變址尋址13150H(2)數(shù)據(jù)傳送指令(通用數(shù)據(jù)傳送指令、累加器專用傳送指令)算術(shù)指令(加法指令、減法指令(*加減指令對4個標(biāo)志位的影響[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作數(shù)必須是累加器)除法指令(*被除數(shù)在累加器中,除法指令執(zhí)行完以后,商和余數(shù)?)邏輯指令(邏輯運算指令(*XOR,AND,OR,TEST指令及指令執(zhí)行后對標(biāo)志位的影響)、移位指令)串處理指令(與REP相配合工作的MOVS、STOS、LODS指令,與REPE/REPZ和REPNE/REPNZ聯(lián)合工作的CMPS、SCAS指令)控制轉(zhuǎn)移指令(無條件轉(zhuǎn)移指令、條件轉(zhuǎn)移指令、循環(huán)指令、子程序、中斷)1、將首地址為STRING的字節(jié)數(shù)組的第7個元素(編號從0開始)送到累加器AL中,用SI寄存器相對尋址的指令為:MOVSI6H和 MOVALSTRING[SI]。2、下列ASCII碼串(包括空格符)依次存儲在起始地址為CSTRING的字節(jié)單元中:CSTRINGDB‘BASEDADDRESSING’請編寫指令將字符串中的第1個和第7個字符傳送給DX寄存器。MOVDHCSRTINGMOVDLCSRTING+7-13、如果JMP指令采用段間間接尋址,那么轉(zhuǎn)移地址存放在4個相鄰字節(jié)單元中,其中前兩個字節(jié)存放的是偏移地址,而后兩個字節(jié)存放的是段地址。4、重復(fù)前綴指令REP的重復(fù)次數(shù)由計數(shù)寄存器CountReg決定。5、在串操作指令前使用重復(fù)前綴指令REPE,終止串的重復(fù)操作條件是CountReg=0或ZF=06、當(dāng)標(biāo)志位CF=1時表示無符號數(shù)運算產(chǎn)生溢出,而當(dāng)標(biāo)志位OF=1是表示帶符號數(shù)運算產(chǎn)生溢出。7、AL和VAR字節(jié)單元中分別存放一個帶符號數(shù),執(zhí)行CMPAL,VAR時,如果AL>VAR,那么溢出位和符號位的關(guān)系是。(OF=SF,還有發(fā)生溢出的情況,AL-VAL盡管為負(fù),但OF=1,說明是由于結(jié)果太大(負(fù)的太大)超出了帶符號數(shù)的表示范圍使得符號位為負(fù)的,正確的結(jié)果應(yīng)該為正。)8、循環(huán)控制指令LoopNZ/LoopNE控制循環(huán)繼續(xù)執(zhí)行的條件是ZF=0且CountReg≠0。9.設(shè)SP=4AH,執(zhí)行段內(nèi)返回指令RET4后,SP的值是50H。10.條件轉(zhuǎn)移指令的轉(zhuǎn)移范圍?(只能做段內(nèi)的短轉(zhuǎn)移)11.轉(zhuǎn)移指令JMPNEARPTRPROCA的轉(zhuǎn)移范圍是8000H~7FFFH。12.計算機系統(tǒng)通過主機系統(tǒng)和外部設(shè)備通信。DOS系統(tǒng)功能調(diào)用方式為:(1)設(shè)置入口參數(shù);(2)中斷程序編號送AH寄存器后執(zhí)行INT21H。(教材Page320,page335)13.閱讀下面的程序片段,并分析執(zhí)行結(jié)果。MOVAX,723AHMOVBX,0C86BHSUBAL,BLSBBAH,BHXORAL,01HADCAX,0執(zhí)行該程序片段后:(AX)=0A9CEH,CF=0,OF=0。(XOR使CF/OF為0)第四章匯編語言程序格式(1)偽操作:數(shù)據(jù)定義及存儲器分配偽操作,表達(dá)式賦值偽操作EQU,段定義偽操作、程序開始和結(jié)束偽操作、對準(zhǔn)偽操作、基數(shù)控制偽操作。(2)匯編語言程序格式:匯編語言源程序中的每個語句的組成格式:名字項、操作項(包括?)、操作數(shù)項和注釋項1、在某數(shù)據(jù)段內(nèi)定義變量BUFFERDB30DUP(20)表達(dá)式TYPEBUFFER的值為1。2.BUFlDB3DUP(0,2DUP(1,2),3)COUNTEQU$-BUFl變量COUNT的值是18。3.DATASEGMENTDB2EHDUP(0)VAR1DB12H,34HVAR2DB10HDUP(O)ADR1DWVAR1,VAR2DATAENDS為使ADR1+2字存儲單元中內(nèi)容為0030H,橫線上應(yīng)選用的語句是_ORG$+30H_______。4.BUFDW4,6,$+2,若匯編時BUF分配的偏移地址是0042H,則匯編后BUF數(shù)組中第三個字的值是0048H。5、設(shè)某數(shù)據(jù)段:DATASEGMENT ORG20H NUM1=8 NUM2=NUM1+10H DA1DB‘COMPUTER’ DB0AH,0DH COUNTEQU$-DA1 DA2DW‘CO’,’MP’,’UT,’ER’DATAENDS請回答:(1)DA1的偏移地址是:20H。 (2)COUNT的值是0AH。(3)DA2+5字節(jié)單元的內(nèi)容是‘U’的ASCII碼。(DW/DB儲存字符串的方式不同)6、執(zhí)行下列指令序列后,AX寄存器中的內(nèi)容是什么? TABLEDW10,20,30,40,50 ENTRYDW3 …… MOVBX,OFFSETTABLE ADDBX,ENTRY MOVAX,[BX]1E00H7.下面指令執(zhí)行后,變量DAB中的內(nèi)容是__0F5H______。

DAWDW2A05H

DABDB0FAH

:

MOVAL,BYTEPRTDAW

SUBDAB,AL第五章循環(huán)與分支程序設(shè)計(1)循環(huán)程序結(jié)構(gòu),分支程序結(jié)構(gòu)eg.BEG為起始地址的存儲區(qū)域中存放有100個字節(jié)數(shù)據(jù),現(xiàn)將其首、尾顛倒過來,重新排放這100個字節(jié)數(shù)據(jù)。請在空行處各填上一條指令完善該程序。MOVCX,31HLEASI,BEGMOVDI,SIADDDI,99DON:MOVAL,[SI]XCHGAL,[DI]MOV[SI],ALINCSIDECDILOOPDON1、閱讀如下程序段: ADRRDBXXH,XXH,……,XXH NUMEQU$-ADRR ;NUM為ADRR數(shù)組空間大小 RETTDB? … MOVCX,NUM ;CX中存放ADRR數(shù)組空間大小 MOVBX,-1DON: INCBX ;BX值增一 CMPADRR[BX],0 ;訪問ADRR數(shù)組中偏移地址為BX的值并與0比較 LOOPZDON ;若大于0則繼續(xù)DON循環(huán) JNZNEXT ;否則轉(zhuǎn)至NEXT MOVBL,OFFH ;若循環(huán)完未轉(zhuǎn)至NEXT,則BL中為OFFHNEXT: MOVRETT,BL ;將BL中址送RETT HLT請回答(1)該程序完成的功能是什么? 在以Adrr為起始地址的數(shù)組中查找第一個非0數(shù)據(jù)(2)程序執(zhí)行后RETT字節(jié)單元中的內(nèi)容是什么?若找到非0數(shù)據(jù),則將第一個非0數(shù)據(jù)在數(shù)組中的偏移量送入RETT單元中,若未找到,則將0FFH送入RETT單元中。2、閱讀程序段:STRINGDB‘ABCDEFGHIJ‘┇ MOVAH,01 INT21H ANDAL,0FH ;這條語句等價于減去30H DECAL XORAH,AH ;以上三條語句是將1-9的ASCII碼轉(zhuǎn)換為1-9 MOVBX,OFFSETSTRING ADDBX,AX ;BX+AX,即將BX中存放待輸出字符的偏移地址 MOVBL,[BX] ;將STRING中偏移地址為BX的字符取出 MOVAH,02H INT21H┇請回答:(1)上述程序段的功能是什么? 上述程序段的功能是根據(jù)從鍵盤輸入的字符‘1’~‘9’,確定在顯示器上顯示STRING中第幾個字符。(2)從鍵盤輸入字符‘4’,程序段有什么結(jié)果?輸出’D’3、閱讀程序段: BLOCKDB20H,1FH,08H,81H,OFFH… RESULTDB? …START: LEASI,BLOCK ;使SI指向BLOCK單元首地址 MOVCX,[SI] ;將SI地址中操作數(shù)傳送到CX寄存器中 INCSI ;SI指向下一個地址 MOVAL,[SI] ;將SI中操作數(shù)傳送到AL寄存器中LOP1:CMPAL,[SI+1] ;比較BLOCK/BLOCK+1地址中操作數(shù) JNGNEXT ;若BLOCK〉BLOCK+1則轉(zhuǎn)至NEXT MOVAL,[SI+1] ;否則將BLOCK+1中數(shù)送入AL寄存器NEXT: INCSI ;SI指向下一個地址 LOOPLOP1 ;循環(huán)執(zhí)行LOP1 MOVRESULT,AL ;將AL中數(shù)送入RESULT中問:(1)該程序完成的功能是從32個有符號數(shù)中找出最小的送入RESULT中。(2)該程序循環(huán)的次數(shù)是31次。4、下列程序片段用來分別統(tǒng)計ARRAY數(shù)組中奇數(shù)和偶數(shù)的個數(shù)。請在空白處填寫合適的指令。DATASEGMENT ARRAYDW23ABH,1570H,567,1765H,46,5210HCOUNTEQU($-ARRAY)/2 ;COUNT為數(shù)組中元素個數(shù)DA1DB?DA2DB?DATAENDS……LEASI,ARRAY ;SI中存放ARRAY首地址MOVCX,COUNT ;CX中存放數(shù)組元素個數(shù)LOP1: MOVAX,[SI] ;將ARRAY中偏移地址為SI的元素送AX TESTAX,0001H ;最低為為1則為奇數(shù),否則為偶數(shù)JZLOP2INCBLJMPLOP3LOP2: INCBHLOP3: ADDSI,2 ;SI地址值增2DECCXJNZLOP1MOVDA1,BLMOVDA2,BH5.閱讀如下程序片段,回答所提出的問題,假定X1,X2,…XN為無符號數(shù)。ORG100HBLOKDWX1,X2,…,XNCOUNTEQU($-BLOK)/2RESULTDW?…LEABX,BLOK-2MOVCX,COUNTXORAX,AXGOON:ADDBX,2CMPAX,[BX]JAENEXTMOVAX,[BX]NEXT:LOOPGOONMOVRESULT,AX程序片段執(zhí)行完后,RESULT字單元的內(nèi)容=MAX(X1,X2…Xn),(BX)=100H+2*(COUNT-1),程序循環(huán)次數(shù)=COUNT。6.下列程序片段調(diào)用單個字符顯示的2號功能顯示STRING中的字符串‘COMPUTER’(不顯示字符‘$’)。(調(diào)用DOS的2號功能實現(xiàn))

STRINGDB‘COMPUTER’,‘$’

┇設(shè)AX,BX中的數(shù)一個為正數(shù),一個為負(fù)數(shù),編寫程序片段完成將正數(shù)送到PLW單元中存放。編程實現(xiàn):TESTAX,8000HJEK1或JZK1MOVPLW,BWJMPDONEK1:MOVPLW,AXDONE:7、將AX寄存器中的16位數(shù)分成4組,每組4位,然后把這四組數(shù)分別存放在AL、BL、CL、DL寄存器中。DATAREASEGMENT TEMPDB4DUP(?)DATAREAENDSCODESEGMENT ASSUMECS:CODE,DS:DATAREA MOVDS,DATAREASTART: MOVCL,4 MOVCH,4 LEABX,TEMP ;將TEMP地址值送BXROTATE: MOVDX,AX ;將AX寄存器值送DX ANDDL,0FH ;將DX寄存器高8位清零 MOV[BX],DL ;DX寄存器低8位地址送入BX中 INCBX ;BX增1 SHRAX,CL ;邏輯作揖 DECCH ;循環(huán)數(shù)減1 JNZROTATE ;若循環(huán)未完成則繼續(xù)循環(huán)MOVE: MOVDL,TEMP+1 MOVCL,TEMP+2 MOVBL,TEMP+3 MOVAL,TEMP+4MAINENDPCODEENDS ENDSTART8、已定義了兩個整數(shù)變量A、B,試編寫程序完成下列功能:1、若兩個數(shù)中有一個是奇數(shù),則將奇數(shù)存放在A中,偶數(shù)存放在B中。2、若兩個數(shù)均為奇數(shù),則將兩數(shù)均加1后存回原變量。DATAREASEGMENTADW?BDW?DATAREAENDSCSEGSEGMENTMAINPROCFARASSUMECS:CSEG,DS:DATAREASTART:PUSHDSSUBAX,AXPUSHAXMOVAX,DATAREAMOVDS,AXBEGIN:MOVAX,AMOVBX,BXORAX,BX ;AX,BX異或TESTAX,0001H ;測試最低位,0則兩數(shù)同奇偶JZCLASS ;為0則轉(zhuǎn)至CLASSTESTBX,0001H ;若最低位為0則為偶數(shù),否則為奇數(shù)JZEXIT ;為0則轉(zhuǎn)至EXITXCHGBX,A ;交換BX/A中值,即A中存放奇數(shù)MOVB,BX ;將BX中數(shù)送入B中,B中存放偶數(shù)JMPEXITCLASS:TESTBX,0001H ;測試BX是否為奇數(shù)JZEXIT ;不是則轉(zhuǎn)至EXITINCB ;否則B自增1INCA ;A自增1EXIT:RETMAINENDPCSEGENDSENDSTART9、判斷寄存器AH和AL中第3位是否相同,如相同,AH置0,否則AH置全1。答:XORAH,AL ;異或判定是否相同,結(jié)果存放在AH中ANDAH,40H ;將除第三位外的所有位置0JNZONE ;若不為0,即不相等,轉(zhuǎn)至ONEMOVAH,0 ;否則AH置0JMPNEXTONE:MOVAH,0FFH ;AH置全1NEXT:……10、實現(xiàn)下列算式:W=X+Y+36-Z。設(shè)X、Y、Z、W均為雙字長數(shù)據(jù),各自的低十六位數(shù)和高十六位數(shù)分別存放在X、X+2、Y、Y+2、Z、Z+2的存儲單元中,結(jié)果的低十六位字和高十六位字分別存放在W和W+2兩個單元中。答:DATASEGMENT XDD YDD ZDD WDDDATAENDSCODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVDS,AX MOVAX,X ADDAX,Y MOVBX,X+2 ADCBX,Y+2 ADDAX,36 ADCBX,0 SUBAX,Z SBBBX,Z+2 MOVW,AX MOVW+2,BXCODEENDS ENDSTART11、寫出執(zhí)行以下計算的指令序列,其中U、V、W和Z均為存放16位帶符號數(shù)單元的地址。Z←W-(U+6)-(V+9)答:MOVAX,U ADDAX,6 MOVCX,V ADDCX,9 MOVBX,W SUBBX,AX SBBBX,CX MOVZ,BX12、試編寫一程序段求出雙字長數(shù)的絕對值。雙字長數(shù)在A和A+2單元中,結(jié)果存放在B和B+2單元中。答: MOVAX,A MOVDX,A+2 CMPDX,0 JNSZHENGSHU NEGDX ;求補 NEGAX ;求補 SBBDX,0 ;減1,即求出對應(yīng)正數(shù)ZHENGSHU: MOVB,AX MOVB+2,DX INT20H13.從鍵盤輸入一個以$為結(jié)束符的字符串,統(tǒng)計其中的非數(shù)字字符個數(shù)。DSEGSEGMENTBUFFDB50DUP(‘’)MOVCOUNT,0INPUT:MOVAH,01;INT21HMOV[BX],ALINCBXCMPAL,’$’;JNZINPUT;LEABX,BUFF;NEXT:MOVCL,[BX]INCBXCMPCL,’$’;JZDISPCMPCL,30H;JBNEXTCMPCL,39H;JANEXTINCCOUNT;JMPNEXTDISP:|;14.把0~100之間的30個數(shù)存入以GRADE為首地址的30字?jǐn)?shù)組中,GRADE+i表示學(xué)號為i+1的學(xué)生的成績。另一個數(shù)組RANK為30個學(xué)生的名次表,其中RANK+i的內(nèi)容是學(xué)號為i+1的學(xué)生的名次。編寫一程序,根據(jù)GRADE中的學(xué)生成績,將學(xué)生名次填入RANK數(shù)組中。(一個學(xué)生的名次等于成績高于這個學(xué)生的人數(shù)加1。)答:程序如下:DSEGSEGMENTGRADEDW30DUP(?)RANKDW30DUP(?);CSEGSEGMENTM

溫馨提示

  • 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論