《微机原理及应用》练习册答案 下载本文

问:(AX)=____0FFFFH____? (BX)=_______0_______?

10.、下列程序执行以后,为了是DA2字单元中的值为50H,空白处应该填什么?

ORG 34H

NUM=_________0CH_________________? DA1 DW 10H,$+20H,30H,$+40H DA2 DW DA1+NUM+10H

11、有一短程序,试写出它的结果:

MOV AL, 43H OR AL, 20H

两条程序执行完后结果:(AL)= 63H 。 12、某程序,(DS)=0F800H,(DI)=180AH,(0F980A)=0064H

MOV CL,5 SAR [DI],CL

[DI]=______3____________?

13、数据区的存储单元有多少个字节?

ADDR DB 10H DUP(2,3 DUP(2))

答:_______40H_______________。 14、设某用户程序(SP)=50H,(AX)=5678H,(DS)=1111H,如现在有两条进栈指令:

PUSH AX PUSH DS 试问两条指令执行后,(SP)=_ 4CH____? 15、有符号定义语句如下: BUFF DB 1,2,3,?123? EBUFF DB 0

L EQU EBUFF—BUFF 问 L= 6 ?

16、下面两个语句有何区别:X1 EQU 1000H 和 X2=1000H X1可重复定义,X2不可以 。 19、下列程序段执行后,BX寄存器的内容是多少? MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL BX= C02DH 。

20、下列程序段执行后,BX寄存器的内容是多少?

MOV CL ,7

MOV BX,8D16H

13

SHR BX,CL

BX= 011AH 。 21、若(AL)=96H,(BL)=12H,指令MUL BL 执行后,它的值为多少?CF为何值?

AX= 0A8CH ;(CF)= 1 。

22、下列程序执行以后,为了是DA2字单元中的值为62H,空白处应该填什么?

ORG 34H

NUM=______1EF___________________? DA1 DW 12H,$+20H,30H,$+40H DA2 DW DA1+NUM+10H

23、若(AL)=36H,(BL)=24H,指令IMUL BL 执行后,它的值为多少?CF为何值?

AX= 0798H ;(CF)= 1 。 24、已知(AX)=1546H,(CX)=AC21H,CF=1

SAR AX,CL XCHG CH,CL SHL AX,CL

上述三条指令执行后,(AX)=__3000H__,CF=__0___;

25、一个有16个字的数据区,它的起始地址为70A0:DDF6,请写出这个数据区首末字单元的物理地址。

首地址: 7E7F6H H 末地址: 7E802H H

习题五

1、程序有 顺序 、 循环 、 分支 和 子程序 四种结构形式。 2、循环程序可以有两种结构形式,一种是 DO-WHILE 结构形式,另一种是 DO-UNTIL 结构形式。

3、 循环程序由三部分组成:循环初始化部分 、 循环体 、循环控制部分 。 4、 分支程序结构的特点: 各分支之间是并行的,且执行方向是向前的 。

5、 一般情况下,在程序中可设置 数据段 、 代码段 、 堆栈段 、 附加段

四个当前段。

6、下列程序完成什么工作? DATX1 DB 300 DUP(?) DATX2 DB 100 DUP(?)

. .

MOV CX,100 MOV BX,200

14

MOV SI,0 MOV DI,0

NEXT:MOV AL,DATX1[BX][SI]

MOV DATX2[DI],AL INC SI INT DI

LOOP NEXT

答: 将DATX1的后100个字节的元素对应的赋给了DATX2 。

7、用查表的方法将以为十六进制转换成它相应的ASCII码,将程序填写完整。

DATA SEGMENT · ·

HEX DB 4 ASCI DB ? DATA ENDS

· ·

BEING: MOV AX,DATA (1) MOV DS,AX (2) MOV BX,OFFSET TABLE XOR AX,AX

MOV AL,_30H___(3)_____? ADD BX,AX MOV AL,[BX]

MOV _ASCI___(4)____,AL MOV AH,4CH INT 21H COSEG ENDS

END _BEING___(5)_______ 8、编制一程序,求两个数组对应的数据之差,并把结果存入新数组SUM之中。计算一直进行到两数之差为零或数组结束。将新数组的长度存于LEN单元中。

DSEG SEGMENT

ARRAY1 DB 71,21,40,44,34,32,28,171 ARRAY2 DB 12,15,70,40,10,87,524,713 CUNT EQU $-ARRAY2 LEN DB ?

SUM DB 20H DUP(0) DSEG ENDS

15

SSEG SEGMENT PARA STACK DW 20H DUP(?) SSEG ENDS

CSEG SEGMENT

ASSUME DS: DSEG, SS: SSEG, CS:CSEG

START: MOV AX,DSEG MOV DS,AX

MOV CX,0

MOV CX,CUNT

MOV BX,-1

NOZERO: INC BX

MOV AL,ARRAY1[BX]

SUB AL,ARRAY2[BX]

MOV SUM[BX],AL LOOPNE NOZERO JE ENDO INC BL

ENDO: MOV LEN,BL

MOV AH,4CH INT 21H

CODE ENDS

END START

9、将DX寄存器中的16位数分成2组,每组8位,然后把这两组数分别放在BL和CL中。

SSEG SEGMENT PARA STACK DW 20H DUP(?) SSEG ENDS

CSEG SEGMENT

ASSUME CS:CSEG

START: MOV AX,DX MOV CL,8 SHL DX,CL MOV BL,DL AND CX,0FFH

CODE ENDS

END START 10、比较两个字符串STRING1和STRING2所含字符是否完全相同,同则显示‘MATCH’,若不同则显示‘NO MATCH’。

16