_微機原理第四、五、六章作業(yè)_第1頁
_微機原理第四、五、六章作業(yè)_第2頁
_微機原理第四、五、六章作業(yè)_第3頁
_微機原理第四、五、六章作業(yè)_第4頁
_微機原理第四、五、六章作業(yè)_第5頁
已閱讀5頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、第四章作業(yè)答案4.1 分析匯編語言源程序應(yīng)該由哪些邏輯段組成?各段的作用是什么?語句標號和變量應(yīng)具備哪3種屬性?【解答】匯編語言源程序應(yīng)該由若干個邏輯段組成,可以有若干個數(shù)據(jù)段、代碼段、堆棧段和附加數(shù)據(jù)段,至少要有一個代碼段。各段的作用如下:(1)代碼段用來存放程序和常數(shù)。(2)數(shù)據(jù)段用于數(shù)據(jù)的保存。(3)堆棧段用于保護數(shù)據(jù),尤其在子程序調(diào)用、中斷過程中進行現(xiàn)場信息保護。(4)附加數(shù)據(jù)段用于數(shù)據(jù)的保存。語句標號和變量應(yīng)具備的3種屬性:段屬性、偏移屬性和類型屬性。4.2  指出下列程序中的錯誤:        STAKSG 

2、      SEGMENT                        DB        100 DUP(?)        STA_SG        ENDS        DTSEG        SEGMENT   

3、    DATA1        DB        ?        DTSEG        END        CDSEG        SEGMENT        MAIN        PROC       

4、; FAR        START:        MOV                DS,DATSEG                        MOV                AL,34H    &#

5、160;                   ADD                AL,4FH                        MOV                DATA,AL    

6、60;   START        ENDP        CDSEG        ENDS                        END答案:改正后:STAKSG        SEGMENT        DB      &

7、#160;         100 DUP(?)STAKSG        ENDSDTSEG                SEGMENTDATA1                DB        ?DTSEG              

8、0; ENDSCDSEG         SEGMENTMAIN                PROC        FAR        ASSUME CS: CDSEG, DS: DTSEG, SS: STAKSGSTART:                MOV      

9、0; AX, DTSEGMOV        DS, AXMOV        AL, 34HADD        AL, 4FHMOV        DATA1, ALMOV        AH, 4CHINT                21HMAIN        END

10、PCDSEG        ENDS                END         S4.3.  將下列文件類型填入空格:(1) .obj  (2) .exe  (3) .crf  (4) .asm  (5) .lst  (6) .map          &#

11、160;     編輯程序輸出的文件有_;                   匯編程序輸出的文件有_;                連接程序輸出的文件有_。答案:編輯程序輸出文件: (4)匯編程序輸出文件: (1), (3), (5)連接程序輸出文件: (2), (6)4.4  下面的數(shù)據(jù)項定義了多少個字節(jié)?        DATA_

12、1        DB        6 DUP(4 DUP(0FFH)答案:       24字節(jié)4.5.  對于下面兩個數(shù)據(jù)段,偏移地址為10H和11H的兩個字節(jié)中的數(shù)據(jù)是一樣的嗎?為什么?        DTSEG        SEGMENT                 

13、60;|                DTSEG        SEGMENT        ORG                10H                          |   

14、             ORG                10H        DATA1        DB        72H                  |        

15、0; DATA1        DW        7204H                        DB        04H                  |            &

16、#160;   DTSEG        ENDS        DTSEG        ENDS                      |答案:不一樣. 分別是72H, 04H和04H, 72H. 存儲字時低8位存在低字節(jié),高8位存在高字節(jié).4.6.  下面的數(shù)據(jù)項設(shè)置了多少個字節(jié)?     

17、;   (1) ASC_DATA        DB        '1234'                (2) HEX_DATA        DB        1234H答案:  (1) 設(shè)置了4個字節(jié)    (2) 設(shè)置了2個字節(jié)4.7.   執(zhí)行下列指令后,

18、 AX寄存器中的內(nèi)容是什么?                TABLE        DW        10,20,30,40,50                ENTRY        DW        3       

19、  .          .          .MOV                BX,OFFSET TABLEADD                BX,ENTRYMOV                AX,BX答案:&#

20、160; (AX)=404.8.  分析下列程序的功能,寫出堆棧最滿時各單元的地址及內(nèi)容。        SSEG        SEGMENT         'STACK'        AT        1000H        ; 堆棧的段地址為1000H      

21、60;                 DW                128 DUP(?)         TOS                LABEL        WORD        SSEG 

22、;               ENDS; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        DSEG        SEGMENT                        DW 

23、;       32 DUP(?)        DSEG        ENDS; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -        CSEG        SEGMENT        MAIN    

24、0;   PROC        FAR                        ASSUME        CS:CSEG, DS SEG,SS:SSEG        START:        MOV             

25、  AX,SSEG                        MOV                SS,AX                        MOV              &#

26、160; AX,DSEG                        MOV                DS,AX                        MOV              

27、0; AX,4321H                        CALL        HTOA        RETN:        MOV                AH,4CH            &

28、#160;           INT                21H        MAIN        ENDP        ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -    

29、0;   HTOA        PROC        NEAR                        CMP                AX,15                    

30、0;   JLE                B1                        PUSH        AX                        PUSH      &#

31、160; BP                        MOV                BP,SP                        MOV                BX

32、,BP+2                        AND                BX,0FH                        MOV                BP+

33、2,BX                        POP                BP                        MOV                CL,4

34、0;                       SHR                AX,CL                        CALL        HTOA        B1: 

35、;               POP                AX        B2:                ADD                AL,30H          &

36、#160;             JL                PRT                        ADD                AL,07        PRT:  

37、0;             MOV                DL,AL                        MOV                AH,2            &#

38、160;           INT                21H                        RET        HTOA        ENDP        CSEG    &

39、#160;   ENDS        ;         ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -                        END               

40、 START答案:1000:0F2HB11000:0F4H31000:0F6HB11000:0F8H21000:0FAH        B11000:0FCH        11000:0FEH        RETN1000:100H       4.9 下面是將內(nèi)存一字節(jié)數(shù)據(jù)高4位和低4位互換并放回原位置的程序,找出錯誤并改正。 DATA SEGMENTDD1 DB 23HDATA ENDSCODE SEGMENTASSUME CS

41、:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,OFFSET DD1MOV AL,SIMOV CL,4RCR AL,CLMOV SI,ALMOV AH,4CHINT 21HCODE ENDS END START【解答】程序第8行錯誤:LEA SI,OFFSET DD1,應(yīng)去掉OFFSET;程序第10行錯誤:RCR AL,CL,應(yīng)使用ROR或ROL,改為ROR AL,CL4.10  編寫程序,比較兩個字符串STRING1和STRING2所含字符是否完全相同,若相同則顯示"MATCH",若不同則顯示"N

42、O MATCH"。答案:datarea        segment        string1        db        'asfioa'        string2        db        'xcviyoaf'     

43、  mess1        db        'MATCH','$'        mess2        db        'NO MATCH','$'datarea         endsprognam         segmen

44、t assume cs:prognam,ds:datareamain   proc        far       start: push        dssub                ax,axpush        axmov               

45、; ax,datareamov                ds,axmov                es,axbegin:        mov                cx, string2-string1        mov    

46、60;           bx, mess1-string2        cmp                bx,cx        jnz                dispnolea               

47、dx,addrlea                si,string1lea                di,string2repe                cmpsbjne                dispno      

48、0; mov                ah,9        lea                dx,mess1int                21h        retdispno:        mov  &

49、#160;             ah, 9        lea                dx, mess2        int                21hretmain               

50、; endpprognam                ends                        end        start4.11根據(jù)字節(jié)變量control中的各位被置位情況控制程序轉(zhuǎn)移到8個遠過程中的一個?!窘獯稹緿ATASEGMENTSUBSTABLE DW SUBR1 DW SUBR2DW SUBR3DW SUBR4 DW SU

51、BR5 DW SUBR6 DWSUBR7 DWSUBR8CONTROL DB 40HDATAENDSSS_SEGSEGMENTSTACKDB100DUP(0)SS_SEGENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:SS_SEGMAINPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVBX,OFFSET SUBSTABLEMOVAL,CONTROLDIVERT:RCRAL,1JCGETAGADDBX,2JMPSHORTDIVERTGETAG:CALLBXRETMAINENDPSUBR1PROC RETSUBR1EN

52、DP SUBR8PROC RETSUBR8ENDPCODEENDSENDMAIN4.12 編寫一個程序,接收從鍵盤輸入的10個十進制數(shù)字,輸入回車符則停止輸入,然后將這些數(shù)字加密后(用XLAT指令變換)存入內(nèi)存緩沖區(qū)BUFFER。加密表為;   輸入數(shù)字:    0,1,2,3,4,5,6,7,8,9   密碼數(shù)字:    7,5,9,1,3,6,8,0,2,4答案:Data segmentscode        db       

53、7,5,9,1,3,6,8,0,2,4buffer        db        10 dup(?)Data endsCode segmentassume cs:prognam,ds:datareastart: mov     ax, Datamov    ds,ax mov    si,0 mov     cx,10 lea      bx,scode

54、input:  mov     ah,01 int      21h cmp     al,0ahjz      exitand      al,0fhxlatmov    buffersi,alinc       siloop      inputexit:mov ah,4chint 21h Code ends End sta

55、rt4.13 從鍵盤輸入一系列字符,以回車符結(jié)束,編程統(tǒng)計其中非數(shù)字字符的個數(shù)。【解答】DATA SEGMENT BLOCK DB 100 DUP (?) COUNT DB ?DATA ENDSCODE SEGMENT ASSUME DS:DATA,CS:CODESTART:MOV AX,DATA MOV DS,AX MOV DL,0 LEA SI,BLOCKLP: MOV AH,1INT 21HCMP AL,0DHJZ EXIT MOV SI,AL CMP AL,30HJAE NEXTCMP AL,39HJBE NEXT INC DLNEXT: INC SI JMP LPEXIT: MOV

56、COUNT,DLMOV AH,4CH INT 21HCODE ENDS END START4.14請用16進制和10進制分別顯示內(nèi)存單元中一個字節(jié)的有符號數(shù)。【解答】DATASEGMENT DATA1DB088H DATA2 DB 4 DUP(0)DATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARPUSHDSXOR AX,AXPUSHAXMOVAX,DATAMOVDS,AX HEXN:MOVAL,DATA1 MOV CL,4 SHR AL,CL CAL

57、LDISPL1 MOVAL,DATA1 AND AL,0FH CALL DISPL1 DECN:MOV AL,DATA1 SHL AL,1 JNC EEE MOV DL,'-' MOV AH,2 INT 21H MOV AL,DATA1 NEG AL JMP DECN0 EEE:MOV AL,DATA1 DECN0:LEA BX,DATA2 XOR SI,SI MOV DL,10 DECN1:XOR AH,AH DIV DL MOV BX+SI,AH INC SI AND AL,0FFH JZ AAA JMP DECN1 AAA:DEC SI JZ BBB MOV AL,BYT

58、E PTR BX+SI CALL DISPL1 JMP AAA BBB:MOV AL,BYTE PTR BX CALL DISPL1 RETMAIN ENDPDISPL1 PROC PUSH AX ADD AL,30H CMP AL,39H JNA CCC ADD AL,07H CCC:MOV DL,AL MOV AH,2 INT 21H POP AX RETDISPL1ENDPCODEENDSENDMAIN4.15在數(shù)據(jù)段中以buffer單元開始連續(xù)存放10個8位二進制無符號數(shù),將其中最大數(shù)找出來,存于max單元中,試編程?!窘獯稹縟ata segmentbufferdb27, 17, 10

59、0, 65, 12, 36, 79, 41,88,3maxdb?data endsss_segsegment stackdb100 dup(0)ss_segendscodesegment assumecs:code, ds:data, ss:ss_segmainprocfarmovax, datamovds, axmovcx, 9movbx, 0moval, bufferbxmain1:addbx,2cmpal, bufferbxjgenextmoval, bufferbxnext:loopmain1movmax, almovax, 4c00hint21hmainendpcodeendsend

60、main4.16在數(shù)據(jù)段longdata中存放32位二進制無符號數(shù)(低位在前),將該變量以16進制形式顯示輸出,試編程?!窘獯稹緿ATASEGMENTLONGDATADD0123ABC56HSTRINGDB 'THE NUBER IS:$'DATAENDSSTACKSEGMENTSTACKDB 100 DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXMOVDX,OFFSETSTRINGMOVAH,9INT21HMOVB

61、X,OFFSETLONGDATAADDBX,3MOVCX,0404HBBB:MOVDL,BXDECBXMOVDH,DLSHRDL,CLCALLDISPLANDDH,0FHMOVDL,DHCALLDISPLDECCHJNZBBBMOVDL,48HINT21HJMPZZZDISPLPROCMOVAH,2ADDDL,30HCMPDL,39HJNAEEEADDDL,07HEEE:INT21HRETDISPLENDPZZZ:RETMAINENDPCODEENDSENDMAIN4.17在數(shù)據(jù)段中以buffer單元開始連續(xù)存放10個8位二進制無符號數(shù),將其按由大到小的順序排列,試編程。【解答】DATASEGMENTBUFFERDB37,36,39,32,35,38,31,34,30,33COUNTEQU$-BUFFERDATAENDSSTACKSEGMENTDB20DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKMAINPROCMOVAX,DATAMOV

溫馨提示

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

評論

0/150

提交評論