教材习题答案

  • 格式:doc
  • 大小:90.60 KB
  • 文档页数:4

下载文档原格式

  / 4
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

习题五

一、1. BAACA DAD

二、程序练习题

1.根据题目,写出相关伪指令:

(1) 定义数据段DATA,并在数据段中定义两个字单元X、Y,初始值都是0

答案:

DATA SEGMENT

X DW 0

Y DW 0

DATA ENDS

(2) 定义一个字符串SRING,保存’Computer’答案:

SRING DB ’Computer’

(3) 定义有100个字节单元的COUNT数组,初始值均为空

答案:

COUNT DB 100 DUP(?)

(4) 用赋值伪指令定义PI为3.14

答案:

PI EQU 3.14

(5) 用类型操作符LABEL将VALUE单元定义为字节型

答案:VALUE LABEL BYTE

2.下列伪指令有错吗?如果有错,请指出错误原因。

答案:

(1) X1 DB 35H,0,-80 对。

(2)X2 DB 35,260,-1 错。

260超出了字节范围。

(3)X3 DB 1234H错。

X3是字节型,1234H是字型,不匹配。

(4) X4 DW 100 对。

(5) X5 DW 100(?) 错。缺少DUP。

(6) X6 DD ‘AB’对。

3.分析下列程序段执行情况,给出结果:

(1)答案:

Z= (5+22-15)*14= 168

(2)答案:

累加和TOTAL=83

(3)答案:

功能:将X单元中的十六进制3AH变为十进制入栈保存,AH中为余数。先将0008H入栈,再将0 005H入栈,结果为58。

三、简答题

1 1-4(略)

5.DOS功能AH=1和AH=8都是从键盘输入一个字符,它们有什么不同?

答:INT 21H 功能08的输入操作与功能01H相

似,不同的是输入字符不回显。使用功能08功

能不回显字符,但与01H一样,支持Ctrl_C或

Ctrl_Break的中断处理。

四、编程题:

1.求两个数的平均值。这两个数分别存放在X单元

和Y单元中,而平均值放在Z单元中。(略)

2.将字节变量VARY中两位十六进制数输出。

用分支结构实现:

MOV DL, VARY

MOV CL, 4

ROL DL, CL

AND DL, 0FH

CMP DL, 0AH

JB NUM

ADD DL, 7

NUM: ADD DL, 30H

MOV AH, 2

INT 21H

MOV DL, VARY

AND DL, 0FH

CMP DL, 0AH

JB NUB

ADD DL, 7

NUB: ADD DL, 30H

MOV AH, 2

INT 21H

MOV DL, ‘H’

MOV AH, 2

INT 21H

用循环结构实现:

MOV BL,2

MOV DH, VARY

LOP: MOV CL, 4

ROR DH, CL

MOV DL, DH

AND DL, 0FH

CMP DL, 0AH

JB NUM

ADD DL, 7

NUM: ADD DL, 30H

MOV AH, 2

INT 21H

DEC BL

JNZ LOP

MOV DL, ‘H’

MOV AH, 2

INT 21H

3.利用逐次求大数的方法对内存单元ARRAY开始的一字节为单位的无符号数进行从大到小排序。DATA SEGMENT

ARRAY DB 49,38,65,12,97,13,55,27,28,85 DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV DX, 9

LEA BX, ARRAY

LOOP0: MOV AL, [BX]

MOV SI, BX

INC SI

MOV CX, DX

LOOP1: CMP AL, [SI]

JAE NEXT

XCHG AL, [SI]

NEXT: INC SI

LOOP LOOP1

MOV [BX], AL

INC BX

DEC DX

JNZ LOOP0

4.AX寄存器中存放着4位十六进制数,试编写程序将这4位十六进制数分别转换为相应的ASCII 码,并依次存放到RESULT数组的4个字节中去,要求用子程序的方法实现。

DATA SEGMENT

HEXDATA DW 4D7EH

RESULT DB 4 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE, DS:DATA

START: MOV AX, DATA

MOV DS, AX

MOV CX, 4

LEA SI, HEXDATA

LEA DI, RESULT

MOV BX, [SI]

NEXT: MOV AX, BX

AND AL, 0FH

CALL HEXASC

MOV [DI], AL

INC DI

PUSH CX

MOV CX, 4

SHR BX, CL

POP CX

LOOP NEXT

LEA SI, RESULT+3

MOV CX, 4

STD

MOV AH, 4CH