《匯編語言程序設計》第2次作業(yè)_第1頁
《匯編語言程序設計》第2次作業(yè)_第2頁
《匯編語言程序設計》第2次作業(yè)_第3頁
《匯編語言程序設計》第2次作業(yè)_第4頁
《匯編語言程序設計》第2次作業(yè)_第5頁
已閱讀5頁,還剩13頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

一、單項選擇題(只有一個選項正確,共12道小題)1.若PORT_VAL<5,則執(zhí)行指令MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)后BX的內容是:()。(A)20(B)30(C)5(D)102.假設(AL)=10010010,MOVCL,4SHLAL,CL執(zhí)行上述指令后CF和AL的內容是()。(A)AF=0,(AL)=00100000(B)AF=0,(AL)=00001001(C)AF=1,(AL)=00001001(D)AF=1,(AL)=001000003.下面指令序列測試BH中的數(shù)是否為奇數(shù),若為奇數(shù)則轉移至K1處,橫線處的指令應為()。TESTBH,01H_____K1(A)JNE(B)JS(C)JZ(D)JC4.已知標號NEXT與指令MOVAX,TYPENEXT在同一個段內,則AX的值為()。(A)2(B)-1(C)0(D)15.DATASEGMENTBUFDB1,2,3,4,5COUNTEQUDATAENDS在以上數(shù)據(jù)段中COUNT的值為()(A)4(B)6(C)5(D)36.下列是8位二進制數(shù)的補碼,其中真值最大的是()。(A)00000001(B)00000000(C)11111111(D)100010007.16位有符號數(shù)的補碼所表示的十進制數(shù)的范圍是()。(A)-32768~+32767(B)-65535~+65536(C)0~65535(D)-32767~+327688.下面的XCHG指令中,語法正確的是()。(A)XCHGAL,DS(B)XCHGAL,0FH(C)XCHGBL,[BX](D)XCHGBUF1,BUF29.LDSSI,ES:[2000H]指令的全部功能是()。(A)把地址2000H字單元內容送DS,把2002H字單元內容送SI(B)把地址2000H字單元的內容送SI(C)把地址2000H字單元內容送SI,把2002H字單元內容送DS(D)把地址2000H送SI10.數(shù)據(jù)定義如下:BUF1DB10BUF2DW20DUP(?)實現(xiàn)將BUF1單元的內容與BUF2開始的第三個字節(jié)單元內容相比較的指令是()。(A)MOVAL,BUF1CMPAL,BUF2+2(B)MOVAL,BUF1CMPALBUF2+3(C)MOVAL,BUF1CMPAL,BYTEPTRBUF2+2(D)CMPBUF1,BYTEPTRBUF2+311.某數(shù)據(jù)段如下:DATASEGMENTORG20HXDB12HYDW789AHDATAENDS則Y單元的偏移址是()。(A)20H(B)21H(C)12H(D)012.MOVAL,-1NEGALXORAL,65上述程序段執(zhí)行后,AL中的內容是()。(A)61H(B)01H(C)64H(D)40H二、主觀題(共21道小題)(主觀題請按照題目,離線完成,完成后紙質上交學習中心,記錄成績。在線只需提交客觀題答案。)13.在0624H單元內有一條二字節(jié)JMPSHORTOBJ指令,如其中位移量為(1)27H,(2)6BH,(3)0C6H,試問轉向地址OBJ的值是多少?14.假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(1)MOVAX,0ABH(2)MOVAX,BX(3)MOVAX,[100H](4)MOVAX,VAL(5)MOVAX,[BX](6)MOVAX,ES:[BX](7)MOVAX,[BP](8)MOVAX,[SI](9)MOVAX,[BX+10](10)MOVAX,VAL[BX](11)MOVAX,[BX][SI](12)MOVAX,VAL[BX][SI]15.設(DS)=1B00H,(ES)=2B00H,有關存儲單元的內容如上右圖所示。請寫出兩條指令把字變量X裝入AX寄存器。16.求出以下各十六進制數(shù)與十六進制數(shù)62A0H之和,并根據(jù)結果設置標志位SF、ZF、CF和OF的值。(1)1234H(2)4321H(3)CFA0H(4)9D60H17.指出下列指令的錯誤:(1)MOVAH,BX;(2)MOV[BX],[SI];(3)MOVAX,[SI][DI];(4)MOVMYDAT[BX][SI],ES:AX;(5)MOVBYTEPTR[BX],1000;(6)MOVBX,OFFSETMYDAT[SI];(7)MOVCS,AX;(8)MOVECX,AX;18.下面哪些指令是非法的?(假設OP1,OP2是已經(jīng)用DB定義的變量)(1)CMP15,BX;(2)CMPOP1,25(3)CMPOP1,OP2;(4)CMPAX,OP1;19.假設下列指令中的所有標識符均為類型屬性為字的變量,請指出下列哪些指令是非法的?它們的錯誤是什么?(1)MOVBP,AL;(2)MOVWORD_OP[BX+4*3][DI],SP(3)MOVWORD_OP1,WORD_OP2;(4)MOVAX,WORD_OP1[DX];(5)MOVSAVE_WORD,DS(6)MOVSP,SS:DATA_WORD[BX][SI](7)MOV[BX][SI],2;(8)MOVAX,WORD_OP1+WORD_OP2(9)MOVAX,WORD_OP1-WORD_OP2+100(10)MOVWORD_OP1,WORD_OP1-WORD_OP220.假設VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤之處:(1)ADDVAR1,VAR2;(2)SUBAL,VAR1;(3)JMPLAB[SI];(4)JNZVAR1;(5)JMPNEARLAB;21.有符號定義語句如下:BUFFDB1,2,3,‘123’EBUFFDB0LEQUEBUFF-BUFF問L的值是多少?22.假設程序中的數(shù)據(jù)定義如下:LNAMEDB30DUP(?)ADDRESSDB30DUP(?)CITYDB15DUP(?)CODE_LISTDB1,7,8,3,2(1)用一條MOV指令將LNAME的偏移地址放入AX。(2)用一條指令將CODE_LIST的頭兩個字節(jié)的內容放入SI。(3)用一條偽操作使CODE_LENGTH的值等于CODE_LIST域的實際長度。23.試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。24.試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。25.編寫程序,從鍵盤接收一個小寫字母,然后找出它的前導字符和后續(xù)字符,再按順序顯示這三個字符。26.下面的程序段有錯嗎?若有,請指出錯誤。CRAYPROCPUSHAXADDAX,BXRETENDPCRAY27.寫一段子程序SKIPLINES,完成輸出空行的功能??粘龅男袛?shù)在AX寄存器中。28.編寫一條宏指令CLRB,完成用空格符將一字符區(qū)中的字符取代的工作。字符區(qū)首地址及其長度為變元。29.寫出分配給下列中斷類型號在中斷向量表中的物理地址。(1)INT12H(2)INT830.用CALL指令來模擬實現(xiàn)INT21H顯示字符T的功能。31.寫出指令將一個字節(jié)數(shù)據(jù)輸出到端口25H。32.寫出指令將一個字數(shù)據(jù)從端口1000H輸入。33.在ADDR單元中存放著數(shù)據(jù)Y,試編寫一程序把Y中1的個數(shù)存入COUNT單元中。參考答案:本次作業(yè)是本門課程本學期的第2次作業(yè),注釋如下:一、單項選擇題(只有一個選項正確,共12道小題)1.若PORT_VAL<5,則執(zhí)行指令MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)后BX的內容是:()。(A)20(B)30(C)5(D)10你選擇的答案:A[正確]正確答案:A解答參考:2.假設(AL)=10010010,MOVCL,4SHLAL,CL執(zhí)行上述指令后CF和AL的內容是()。(A)AF=1,(AL)=00001001(B)AF=0,(AL)=00001001(C)AF=1,(AL)=00100000(D)AF=0,(AL)=00100000你選擇的答案:C[正確]正確答案:C解答參考:3.下面指令序列測試BH中的數(shù)是否為奇數(shù),若為奇數(shù)則轉移至K1處,橫線處的指令應為()。TESTBH,01H_____K1(A)JNE(B)JZ(C)JS(D)JC你選擇的答案:A[正確]正確答案:A解答參考:4.已知標號NEXT與指令MOVAX,TYPENEXT在同一個段內,則AX的值為()。(A)0(B)1(C)2(D)-1你選擇的答案:B[正確]正確答案:B解答參考:5.DATASEGMENTBUFDB1,2,3,4,5COUNTEQUDATAENDS在以上數(shù)據(jù)段中COUNT的值為()(A)3(B)5(C)4(D)6你選擇的答案:B[正確]正確答案:B解答參考:6.下列是8位二進制數(shù)的補碼,其中真值最大的是()。(A)10001000(B)11111111(C)00000000(D)00000001你選擇的答案:D[正確]正確答案:D解答參考:7.16位有符號數(shù)的補碼所表示的十進制數(shù)的范圍是()。(A)-32767~+32768(B)-32768~+32767(C)-65535~+65536(D)0~65535你選擇的答案:B[正確]正確答案:B解答參考:8.下面的XCHG指令中,語法正確的是()。(A)XCHGAL,DS(B)XCHGBL,[BX](C)XCHGAL,0FH(D)XCHGBUF1,BUF2你選擇的答案:B[正確]正確答案:B解答參考:9.LDSSI,ES:[2000H]指令的全部功能是()。(A)把地址2000H送SI(B)把地址2000H字單元的內容送SI(C)把地址2000H字單元內容送SI,把2002H字單元內容送DS(D)把地址2000H字單元內容送DS,把2002H字單元內容送SI你選擇的答案:C[正確]正確答案:C解答參考:10.數(shù)據(jù)定義如下:BUF1DB10BUF2DW20DUP(?)實現(xiàn)將BUF1單元的內容與BUF2開始的第三個字節(jié)單元內容相比較的指令是()。(A)CMPBUF1,BYTEPTRBUF2+3(B)MOVAL,BUF1CMPAL,BYTEPTRBUF2+2(C)MOVAL,BUF1CMPAL,BUF2+2(D)MOVAL,BUF1CMPALBUF2+3你選擇的答案:B[正確]正確答案:B解答參考:11.某數(shù)據(jù)段如下:DATASEGMENTORG20HXDB12HYDW789AHDATAENDS則Y單元的偏移址是()。(A)0(B)20H(C)21H(D)12H你選擇的答案:C[正確]正確答案:C解答參考:12.MOVAL,-1NEGALXORAL,65上述程序段執(zhí)行后,AL中的內容是()。(A)40H(B)64H(C)01H(D)61H你選擇的答案:B[正確]正確答案:B解答參考:(注意:若有主觀題目,請按照題目,離線完成,完成后紙質上交學習中心,記錄成績。在線只需提交客觀題答案。)二、主觀題(共21道小題)13.在0624H單元內有一條二字節(jié)JMPSHORTOBJ指令,如其中位移量為(1)27H,(2)6BH,(3)0C6H,試問轉向地址OBJ的值是多少?參考答案:(1)OBJ=0624H+02H+27H=064DH

(2)OBJ=0624H+02H+6BH=0691H

(3)OBJ=0624H+02H+0C6H=05ECH;C6H對應的負數(shù)為-3AH(向上轉移,負位移量)14.假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,數(shù)據(jù)段中變量名VAL的偏移地址為0050H,試指出下列源操作數(shù)字段的尋址方式是什么?其物理地址值是多少?(1)MOVAX,0ABH(2)MOVAX,BX(3)MOVAX,[100H](4)MOVAX,VAL(5)MOVAX,[BX](6)MOVAX,ES:[BX](7)MOVAX,[BP](8)MOVAX,[SI](9)MOVAX,[BX+10](10)MOVAX,VAL[BX](11)MOVAX,[BX][SI](12)MOVAX,VAL[BX][SI]參考答案:(1)立即方式;操作數(shù)在本條指令中

(2)寄存器尋址方式;操作數(shù)為(BX)=0100H

(3)直接尋址方式;PA=20100H

(4)直接尋址方式;PA=20050H

(5)BX寄存器間接尋址方式;PA=20100H

(6)附加段BX寄存器間接尋址方式;PA=21100H

(7)BP寄存器間接尋址方式;PA=15010H

(8)SI寄存器間接尋址方式;PA=200A0H

(9)BX寄存器相對尋址方式;PA=20110H

(10)BX寄存器相對尋址方式;PA=20150H

(11)BX和SI寄存器基址變址尋址方式;PA=201A0H

(12)BX和SI寄存器相對基址變址尋址方式;PA=201F0H15.設(DS)=1B00H,(ES)=2B00H,有關存儲單元的內容如上右圖所示。請寫出兩條指令把字變量X裝入AX寄存器。參考答案:MOVBX,[2000H]

MOVAX,ES:[BX]16.求出以下各十六進制數(shù)與十六進制數(shù)62A0H之和,并根據(jù)結果設置標志位SF、ZF、CF和OF的值。(1)1234H(2)4321H(3)CFA0H(4)9D60H參考答案:(1)和為74D4H;SF=0,ZF=0,CF=0,OF=0

(2)和為A5C1H;SF=1,ZF=0,CF=0,OF=1

(3)和為3240H;SF=0,ZF=0,CF=1,OF=0

(4)和為0000H;SF=0,ZF=1,CF=1,OF=017.指出下列指令的錯誤:(1)MOVAH,BX;(2)MOV[BX],[SI];(3)MOVAX,[SI][DI];(4)MOVMYDAT[BX][SI],ES:AX;(5)MOVBYTEPTR[BX],1000;(6)MOVBX,OFFSETMYDAT[SI];(7)MOVCS,AX;(8)MOVECX,AX;參考答案:(1)MOVAH,BX;寄存器類型不匹配(2)MOV[BX],[SI];不能都是存儲器操作數(shù)(3)MOVAX,[SI][DI];[SI]和[DI]不能一起使用(4)MOVMYDAT[BX][SI],ES:AX;AX寄存器不能使用段超越(5)MOVBYTEPTR[BX],1000;1000超過了一個字節(jié)的范圍(6)MOVBX,OFFSETMYDAT[SI];MYDAT[SI]已經(jīng)是偏移地址,不能再使用OFFSET(7)MOVCS,AX;CS不能用作目的寄存器(8)MOVECX,AX;兩個操作數(shù)的數(shù)據(jù)類型不同18.下面哪些指令是非法的?(假設OP1,OP2是已經(jīng)用DB定義的變量)(1)CMP15,BX;(2)CMPOP1,25(3)CMPOP1,OP2;(4)CMPAX,OP1;參考答案:(1)CMP15,BX;錯,立即數(shù)不能作為目的操作數(shù)(2)CMPOP1,25(3)CMPOP1,OP2;錯,不能都是存儲器操作數(shù)(4)CMPAX,OP1;錯,類型不匹配,應為CMPax,wordptrop119.假設下列指令中的所有標識符均為類型屬性為字的變量,請指出下列哪些指令是非法的?它們的錯誤是什么?(1)MOVBP,AL;(2)MOVWORD_OP[BX+4*3][DI],SP(3)MOVWORD_OP1,WORD_OP2;(4)MOVAX,WORD_OP1[DX];(5)MOVSAVE_WORD,DS(6)MOVSP,SS:DATA_WORD[BX][SI](7)MOV[BX][SI],2;(8)MOVAX,WORD_OP1+WORD_OP2(9)MOVAX,WORD_OP1-WORD_OP2+100(10)MOVWORD_OP1,WORD_OP1-WORD_OP2參考答案:假設下列指令中的所有標識符均為類型屬性為字的變量,請指出下列哪些指令是非法的?它們的錯誤是什么?(1)MOVBP,AL;錯,寄存器類型不匹配(2)MOVWORD_OP[BX+4*3][DI],SP(3)MOVWORD_OP1,WORD_OP2;錯,不能都是存儲器操作數(shù)(4)MOVAX,WORD_OP1[DX];錯,DX不能用于存儲器尋址(5)MOVSAVE_WORD,DS(6)MOVSP,SS:DATA_WORD[BX][SI](7)MOV[BX][SI],2;錯,[BX][SI]未指出數(shù)據(jù)類型(8)MOVAX,WORD_OP1+WORD_OP2(9)MOVAX,WORD_OP1-WORD_OP2+100(10)MOVWORD_OP1,WORD_OP1-WORD_OP220.假設VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤之處:(1)ADDVAR1,VAR2;(2)SUBAL,VAR1;(3)JMPLAB[SI];(4)JNZVAR1;(5)JMPNEARLAB;參考答案:假設VAR1和VAR2為字變量,LAB為標號,試指出下列指令的錯誤之處:(1)ADDVAR1,VAR2;不能都是存儲器操作數(shù)(2)SUBAL,VAR1;數(shù)據(jù)類型不匹配(3)JMPLAB[SI];LAB是標號而不是變量名,后面不能加[SI](4)JNZVAR1;VAR1是變量而不是標號(5)JMPNEARLAB;應使用NEARPTR21.有符號定義語句如下:BUFFDB1,2,3,‘123’EBUFFDB0LEQUEBUFF-BUFF問L的值是多少?參考答案:L=6。22.假設程序中的數(shù)據(jù)定義如下:LNAMEDB30DUP(?)ADDRESSDB30DUP(?)CITYDB15DUP(?)CODE_LISTDB1,7,8,3,2(1)用一條MOV指令將LNAME的偏移地址放入AX。(2)用一條指令將CODE_LIST的頭兩個字節(jié)的內容放入SI。(3)用一條偽操作使CODE_LENGTH的值等于CODE_LIST域的實際長度。參考答案:(1)MOVAX,OFFSETLNAME(2)MOVSI,WORDPTRCODE_LIST(3)CODE_LENGTHEQU;此語句必須放在CODE_LIST語句之后23.試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。參考答案:程序段如下:BEGIN:MOVAH,1;從鍵盤輸入一個字符的DOS調用INT21HCMPAL,‘a(chǎn)’;輸入字符<‘a(chǎn)’嗎?JBSTOPCMPAL,‘z’;輸入字符>‘z’嗎?JASTOPSUBAL,20H;轉換為大寫字母,用ANDAL,11011111B也可MOVDL,AL;顯示一個字符的DOS調用MOVAH,2INT21HJMPBEGINSTOP:RET24.試編寫一個匯編語言程序,要求對鍵盤輸入的小寫字母用大寫字母顯示出來。參考答案:程序段如下:BEGIN:MOVAH,1;從鍵盤輸入一個字符的DOS調用INT21HCMPAL,‘a(chǎn)’;輸入字符<‘a(chǎn)’嗎?JBSTOPCMPAL,‘z’;輸入字符>‘z’嗎?JASTOPSUBAL,20H;轉換為大寫字母,用ANDAL,11011111B也可MOVDL,AL;顯示一個字符的DOS調用MOVAH,2INT21HJMPBEGINSTOP:RET25.編寫程序,從鍵盤接收一個小寫字母,然后找出它的前導字符和后續(xù)字符,再按順序顯示這三個字符。參考答案:程序段如下:BEGIN:MOVAH,1;從鍵盤輸入一個字符的DOS調用INT21HCMPAL,‘a(chǎn)’;輸入字符<‘a(chǎn)’嗎?JBSTOPCMPAL,‘z’;輸入字符>‘z’嗎?JASTOPDECAL;得到前導字符MOVDL,AL;準備顯示三個字符MOVCX,3DISPLAY:MOVAH,2;顯示一個字符的DOS調用INT21HINCDLLOOPDISPLAYSTOP:RET26.下面的程序段有錯嗎?若有,請指出錯誤。CRAYPROCPUSHAXADDAX,BXRETENDPCRAY參考答案:程序有錯。改正如下:CRAYPROCADDAX,BXRETCRAYENDP;CRAY是過程名,應放在ENDP的前面27.寫一段子程序SKIPLINES,完成輸出空行的功能??粘龅男袛?shù)在AX寄存器中。參考答案:程序如下:CSEGSEGMENTSKIPLINESPROCFARASSUMECS:CSEGBEGIN:PUSHC

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論