(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