微机原理与接口技术 顾晖 习题参考答案 下载本文

(4)COUNT EQU DB2-DB1 7. 答:

第一个OR表示该指令是OR指令,在程序运行时,该OR操作被执行。 第二个OR是逻辑操作符OR,在汇编时,OR运算被执行。

8.对于下面的数据定义,各条MOV指令单独执行后,有关寄存器的内容是什么? 4分 PREP DB ?

TABA DW 5 DUP(?) TABB DB ?NEXT? TABC DD 12345678H

1)MOV AX,TYPE PREP 2)MOV AX,TYPE TABA 3)MOV CX,LENGTH TABA 4)MOV DX,SIZE TABA 5)MOV CX,LENGTH TABB 6)MOV DX,SIZE TABC 答:

(1)(AX)=1 (2)(AX)=2 (3)(CX)=5 (4)(DX)=0AH (5)(CX)=1 (6)(DX)=4

9.设数据段DSEG中符号及数据定义如下,试画出数据在内存中的存储示意图。4分 DSEG SEGMENT DSP=100 SAM=DSP+20

DAB DB ?/GOTO/?,0DH,0AH DBB DB 101B,19,?a? .RADIX 16

CCB DB 10 DUP(?) EVEN

DDW DW ?12?,100D,333,SAM .RADIX 10 EDW DW 100 LEN EQU $-DAB DSEG ENDS 答:略。 10. 答: 19

11. 答: 12. 答: DSEG SEGMENT

STRING DB 'NEXT123DF$' DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

21

MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,0 AGAIN:

MOV AL,[SI] CMP AL,'$' JZ NEXT INC CX INC SI JMP AGAIN NEXT: MOV DX,CX MVDAT:

MOV [SI]+2,AL DEC SI

MOV AL,[SI] LOOP MVDAT MOV [SI]+2,AL

MOV WORD PTR [SI],DX EXIT:

MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT

STRING DB 'It is FEB&03' COUNT=$-STRING DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START:

MOV AX,DSEG MOV DS,AX LEA SI,STRING MOV CX,COUNT AGAIN:

MOV AL,[SI] CMP AL,'&' JNZ NEXT MOV AL,' ' MOV [SI],AL NEXT: INC SI

22

LOOP AGAIN EXIT:

MOV AH,4CH INT 21H CODE ENDS END START

DSEG SEGMENT

BLOCK DB 4,5,-2,7,8,9,2,1,0AH,1BH,87H,23H,44H,33H,45H,28H,0DH,8EH,66H,22H COUNT=$-BLOCK DSEG ENDS CODE SEGMENT

ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX

20

13. 答: (3)

(4)(2) (5)(1) (6) 1B50H 1000H 1A70H 150BH

上表左侧的序号,表示对应操作完成后SP指向的栈顶的位置。 14.设计以下子程序:

1)将AX中的4位BCD码转换为二进制码,放在AX中返回。

2)将AX中无符号二进制数(<9999D)转换为4位BCD码串,放在AX中返回。 3)将AX中有符号二进制数转换为十进制数ASCII码字符串,DX和CX返回串的偏移地址和长度。(4分)答: SUB1 PROC MOV BX,AX MOV CL,4 ROL BX,CL MOV AX,BX AND AX,000FH MOV CX,1000

MUL CX ;千位在DX,AX,有效值在AX中 PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,100

23

MUL CL ;百位在AX POP CX

ADD AX,CX ;千百位在AX PUSH AX MOV CL,4 ROL BX,CL MOV AX,BX AND AL,0FH MOV CL,10

MUL CL ;十位在AX POP CX

ADD AX,CX ;千百十位在AX MOV CL,4 ROL BX,CL AND BX,0FH ADD AX,BX RET

SUB1 ENDP SUB2 PROC MOV DX,0 MOV CX,1000

DIV CX ;千位数字在AX中 MOV BX,AX MOV CL,4

ROR BX,CL ;千位数字移至BX的高4位 MOV AX,DX MOV CL,100

DIV CL ;百位数字在AL中 OR BH,AL ;千百位置BH MOV AL,AH MOV AH,0 MOV CL,10

DIV CL ;十位数字在AL中,个位在AH中 MOV CL,4 SAL AL,CL

MOV BL,AL ;十位数字置BL高4位 OR BL,AH ;十位个位置BL MOV AX,BX RET

SUB2 ENDP

SUB3 PROC PUSH BX MOV BX,0 LEA DI,ASCNUM

24