第四章答案

更新时间:2023-05-12 09:00:08 阅读: 评论:0

4-1  假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列指令中哪些是非法的?它们的错误是什么?
(1)MOV BP,AL  ;非法,操作数类型不同
(2)MOV WORD_OP[BX+4*3][DI],SP    ;合法
(3)MOV WORD_OP1,WORD_OP2    ;非法,不允许两个内存单元直接传递数据
(4)MOV AX,WORD_OP1[DX]    ;合法
(5)MOV SAVE_WORD,DS      ;合法
(6)MOV SP,SS:DATA_WORD[BX][SI] ;合法
(7)MOV [BX][SI],2    ;非法,必须有一个寄存器
(8)MOV AX,WORD_OP1+WORD_OP2  ;非法,两个内存单元地址相加没有意义
(9)MOV AX,WORD_OP1-WORD_OP2+100 ;合法
(10)MOV WORD_OP1,WORD_OP1-WORD_OP2  ;非法,不允许两个内存单元直接传递数据
4-2   画图说明下列语句所分配的存储空间及初始化的数据值.
(1)BYTE_VAR DB 'BYTE',12,-12H,3 DUP(0,?,DUP(1,2),?)
(2)WORD_VAR DW 5 DUP(0,1,2),?,-5,'BY','TE',256H
4-3  试列出各种方法,使汇编程序把5150H存入一个存储器字中(例如:DW 5150H).
(1)DW 5150H
(2)MOV AX,5150H
  MOV ADDRESS,AX
,写出几个就可以
4-4  假设程序中的数据定义如下:
PARTNO DW ?
PNAME DB 16 DUP(?)
COUNT DD ?
PLENTH EQU $-PARTNO
PLENTH的值为多少?它表示什么意义?
[]:PLENTH 的值为22,GE表示该数据段的长度
4-5 试写出一个完整的数据段DATA_SEG,它把整数5赋予一个字节,并把整数-1,0,2,54放在10字数组DATA_LIST的头5个单元中.然后,写出完整的代码段,其功能为:DATA_LIST中头5个数中的最大值和最小值分别存入MAXMIN单元中.
[]:源程序如下.
DATA_SEG SEGMENT
DB 5
DATA_LIST DW 0FFFFH,0,2,5,4, 5 DUP (?)
MAX DW ?
MIN DW ?
DATA_SEG ENDS
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG,DS:DATA_SEG
START:
MOV AX,DATA_SEG
MOV DS,AX
MOV AX,5
MOV MAX,AX
MOV AX,0FFFFH
MOV MIN,AX
CODE_SEG ENDS
END START
4-6 对于下面的数据定义,三条MOV指令分别汇编成什么?(可用立即数方式表示)
TABLEA DW 10 DUP(?)
TABLEB DB 10 DUP(?)
TABLEC DB '1234'
......
MOV AX,LENGTH TABLEA
MOV BL,LENGTH TABLEB
MOV CL,LENGTH TABLEC
[]:分别汇编成为:
MOV AX,0AH
MOV BL,0AH
MOV CL,1
4-7 对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么?
FLDB DB ?
TABLEA DW 20 DUP(?)
TABLEB DB 'ABCD'
(1)MOV AX,TYPE FLDB  ;(AX)=1   
(2)MOV AX,TYPE TABLEA ;(AX)=2   
(3)MOV CX,LENGTH TABLEA    ;(CX)=14H
(4)MOV DX,SIZE TABLEA      ;(DX)=28H 
(5)MOV CX,LENGTH TABLEB    ;(CX)=1]
4-8  按下面的要求写出程序的框架.
(1)数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;
(2)堆栈段从小段开始,段组名为STACK;
(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;
(4)程序结束.
[]:程序框架如下.
DATA_SEG  SEGMENT
ORG 0E000H
FIRST_TYPE EQU THIS WORD
DATA_GROUP DB 100 DUP(?)
DATA_SEG ENDS
STACK_SEG SEGMENT
ALIGN 16
STACK DB 100 DUP (?)
STACK_SEG  ENDS                                     
CODE_SEG SEGMENT
ASSUME CS:CODE_SEG ,DS:DATA_SEG ,SS:STACK_SEG
ORG 1000H
START:
MOV AX,DATA_SEG
MOV DS,AX
MOV AX,STACK_SEG
MOV SS,AX
.
......
CODE_SEG ENDS
END START     
4-9  请说明表示程序结束的伪操作和结束程序执行的语句之间的差别.它们在源程序中应如何表示?
[]:表示程序结束的伪操作是由系统所执行,并且在操作系统的控制下自动完成,
:MOV AX,4C00H INT 21H;而结束程序执行的语句除了以上这些以外,还可以是其它非正常终止的指令,HALT,EXIT.
4-10  试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
BEGIN:   MOV  AH, 1
                INT    21H
                CMP  AL, a
                JB    STOP
                CMP  AL,z
                JA    STOP
                SUB  AL, 20H
                MOV  DL, AL
                MOV  AH, 2
                INT    21H
                JMP    BEGIN
        STOP:  RET
4-11  试编写一个程序,要求能从键盘接收一个个位数,然后响铃N次(响铃的ASC码为07)。
BEGIN MOV  AH, 1
        INT    21H
        AND  AL, 0FH
        CBW
                  MOV  CX, AX
                  JCXZ    EXIT
          BELL:  MOV    DL, 07
                    MOV  AH, 02
                    INT    21H
                    LOOP    BELL
          EXIT:    RET
4-12 编制一个汇编语言程序,求出首地址为DATA100D字数组中的最小偶数,并把它放在AX中。
    此题根据题意要求应该使用完整汇编格式,因为精简格式也使用

本文发布于:2023-05-12 09:00:08,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/887239.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:程序   要求   数据   结束   表示   指令
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图