_微机原理第四、五、六章作业_第1页
_微机原理第四、五、六章作业_第2页
_微机原理第四、五、六章作业_第3页
_微机原理第四、五、六章作业_第4页
_微机原理第四、五、六章作业_第5页
已阅读5页,还剩15页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第四章作业答案4.1 分析汇编语言源程序应该由哪些逻辑段组成?各段的作用是什么?语句标号和变量应具备哪3种属性?【解答】汇编语言源程序应该由若干个逻辑段组成,可以有若干个数据段、代码段、堆栈段和附加数据段,至少要有一个代码段。各段的作用如下:(1)代码段用来存放程序和常数。(2)数据段用于数据的保存。(3)堆栈段用于保护数据,尤其在子程序调用、中断过程中进行现场信息保护。(4)附加数据段用于数据的保存。语句标号和变量应具备的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  下面的数据项定义了多少个字节?        DATA_

12、1        DB        6 DUP(4 DUP(0FFH)答案:       24字节4.5.  对于下面两个数据段,偏移地址为10H和11H的两个字节中的数据是一样的吗?为什么?        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位存在低字节,高8位存在高字节.4.6.  下面的数据项设置了多少个字节?     

17、;   (1) ASC_DATA        DB        '1234'                (2) HEX_DATA        DB        1234H答案:  (1) 设置了4个字节    (2) 设置了2个字节4.7.   执行下列指令后,

18、 AX寄存器中的内容是什么?                TABLE        DW        10,20,30,40,50                ENTRY        DW        3       

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

20、160; (AX)=404.8.  分析下列程序的功能,写出堆栈最满时各单元的地址及内容。        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 下面是将内存一字节数据高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,应去掉OFFSET;程序第10行错误:RCR AL,CL,应使用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根据字节变量control中的各位被置位情况控制程序转移到8个远过程中的一个。【解答】DATASEGMENTSUBSTABLE 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个十进制数字,输入回车符则停止输入,然后将这些数字加密后(用XLAT指令变换)存入内存缓冲区BUFFER。加密表为;   输入数字:    0,1,2,3,4,5,6,7,8,9   密码数字:    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 从键盘输入一系列字符,以回车符结束,编程统计其中非数字字符的个数。【解答】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进制分别显示内存单元中一个字节的有符号数。【解答】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在数据段中以buffer单元开始连续存放10个8位二进制无符号数,将其中最大数找出来,存于max单元中,试编程。【解答】data 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在数据段longdata中存放32位二进制无符号数(低位在前),将该变量以16进制形式显示输出,试编程。【解答】DATASEGMENTLONGDATADD0123ABC56HSTRINGDB '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在数据段中以buffer单元开始连续存放10个8位二进制无符号数,将其按由大到小的顺序排列,试编程。【解答】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. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论