END START MOV CX,100
MOV AX,SEG LIST MOV DS,AX
MOV AX,SEG BLK MOV ES,AX LEA SI,LIST ADD SI,CX LEA DI,BLK ADD DI,CX STD
REP MOVSB 15
25. 答:
JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)╳16+(IP)+位移量。 (1)转移目标的物理地址=(CS)╳16+0158H (2)转移目标的物理地址=(CS)╳16+0182H (3)转移目标的物理地址=(CS)╳16+017AH (4)转移目标的物理地址=(CS)╳16+01E2H 26. 答: DSEG SEGMENT BUFFER DW 8 DB '12345678' DSEG ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DSEG START:
MOV AX,DSEG MOV DS,AX MOV CX,BUFFER SAR CX,1
LEA SI,BUFFER MOV DI,SI ADD DI,2 AGAIN: ADD SI,2 MOV AL,[SI] AND AL,0FH
SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 SAL BYTE PTR [SI+1],1 OR AL,BYTE PTR [SI+1]
17
MOV [DI],AL INC DI LOOP AGAIN EXIT:
MOV AH,4CH INT 21H CODE ENDS END START
DSEG SEGMENT ORG 10H DAT DB 10 DB ? DSEG ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DSEG START: MOV AX,DSEG MOV DS,AX MOV AL,DAT MOV BL,AL SAL BL,1 ADD AL,BL MOV CL,2 SAL BL,CL ADD AL,BL MOV DAT+1,AL EXIT: MOV AH,4CH INT 21H CODE ENDS END START
16
27. 答: 28. 答: 29. 答: DSEG SEGMENT ORG 10H
DAT DB 10H,20H DB ?,? DSEG ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DSEG START:
MOV AX,DSEG
18
MOV DS,AX MOV AL,DAT MOV AH,DAT+1 MOV CL,3 SAR AX,CL MOV DAT+2,AL MOV DAT+3,AH EXIT:
MOV AH,4CH INT 21H CODE ENDS END START DSEG SEGMENT
BLOCK DW 8 DUP (10H,20H,-3,-9) DSEG ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DSEG START:
MOV AX,DSEG MOV DS,AX LEA SI,BLOCK MOV CX,32 AGAIN:
MOV AX,[SI] CMP AX,0 JNS NEXT NEG AX
MOV [SI],AX NEXT: INC SI INC SI LOOP AGAIN EXIT:
MOV AH,4CH INT 21H CODE ENDS END START 17
DSEG SEGMENT ORG 3030H
DAT DW 1234H,-1234H,?,? DSEG ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
19
START:
MOV AX,DSEG MOV DS,AX MOV AX,DAT MOV BX,DAT+2 IMUL BX
MOV DAT+4,AX MOV DAT+6,DX EXIT:
MOV AH,4CH INT 21H CODE ENDS END START 18
第5章 习题答案
1. 答:
标号是指令的符号地址,可用作控制转移指令的操作数。 标号具有3种属性:段属性、偏移属性和类型属性。 2. 答:
变量是存储单元的符号地址。
变量具有3种属性:段属性、偏移属性和类型属性。 3. 答:
伪指令语句,也称指示性语句,是不可执行语句,汇编后不产生目标代码,它仅仅在汇编过程中告诉汇编程序如何汇编源程序。
宏是一个以宏名定义的指令序列。一旦把某程序段定义成宏,则可以用宏名代替那段程序。在汇编时,要对宏进行宏展开,即把以宏名表示的地方替换为该宏对应的指令序列的目标代码。宏指令可以看成指令语句的扩展,相当于多条指令语句的集合。 4. 答:
汇编语言表达式中有如下运算符:算术操作符、逻辑操作符、移位操作符、关系操作符、数值回送操作符和属性操作符。
操作符所完成的运算在汇编阶段进行。 5. 答: 略。
6. 按下列要求,写出各数据定义语句 2分
1)DB1为10H个重复的字节数据序列:1,2,5个3,4。 2)DB2为字符串?STUDENTS?。
3)DB3为十六进制数序列:12H,ABCDH。
4)用等值语言给符号COUNT赋值DB1数据区所占字节数,该语句写在最后。答: (1)DB1 DB 10H DUP(1,2, 5 DUP(3),4) (2)DB2 DB 'STUDENT' (3)BD3 DW 12H,0ABCDH
20