(8)。RCL DX,CL (DX)=5CCH (9)。RCR DL,01 (DX)=0DCH 3.28 下列程序段执行后,BX 寄存器内容是什么? MOV CL,3 MOV BX,0B7H ROL BX,1 ROR BX,CL 答:(BX)=C02DH 3.29 设数据定义如下:
CONAME DB ‘SPACE EXPLORERS INC。’ PRLINE DB 20 DUP(‘ ’) 用串指令编写程序段分别完成以下功能:
(1)。从左到右把CONAME中的字符串传送到PRLINE。 (2)。从右到左把CONAME中的字符串传送到PRLINE。 (3)。把CONAME第三和第四个字节内容装入AX中。 (4)。把AX寄存器内容存入PRLINE+5开始单元中。 (5)。检查CONAME中有无空格字符,如有传送到BH中。 (6)。编写程序段,把STRING中‘&’字符用空格代替。
解:(1)。从左到右把CONAME中的字符串传送到PRLINE。 Data segment
CONAME DB ‘SPACE EXPLORESINC。’ Count equ $-coname PRLINE DB 20 DUP(‘ ‘) Data ends Code segment
Assume ds:data,es:data,cs:code Start: mov ax,data Mov ds,ax Mov es,ax
MOV SI,OFFSET CONAME MOV DI,OFFSET PRLINE MOV CX,COUNT CLD
REP MOVSB Mov ah,4ch Int 21h Code ends
End start
(1)。从右到左把CONAME中的字符串传送到PRLINE。 Data segment
CONAME DB ‘SPACE EXPLORESINC。’ Count equ $-coname
PRLINE DB 20 DUP(‘ ‘) Data ends Code segment
Assume ds:data,es:data,cs:code Start mov ax,data Mov ds,ax Mov es,ax
MOV SI,OFFSET CONAME+COUNT-1 MOV DI,OFFSET PRLINE+COUNT-1 MOV CX,COUNT STD
REP MOVSB Mov ah,4ch Int 21h Code ends
End start
(3)。把CONAME第三和第四个字节内容装入AX中。 MOV SI,OFFSET CONAME LODSB
MOV AH,AL LODSB
XCHG AH,AL (4)。把AX寄存器内容存入PRLINE+5开始单元中。 MOV DI,OFFSET PRLINE STOSB
MOV AL,AH
STOSB
(5)。检查CONAME中有无空格字符,如有传送到BH中。 MOV DI,OFFSET CONAME MOV CX,COUNT MOV AL,20H CLD
REPNZ SCASB JNZ NEXT
DEC DI
MOV BH,ES:[DI] 。。。。。。 NEXT: 。。。。。。 (6)。编写程序段,把STRING中‘&’字符用空格代替。
Data segment
STRING DB ‘The data is FEB&03 ’ Count equ $-string Data ends Code segment
Assume ds:data,cs:code Start: mov ax,data Mov ds,ax
MOV DI,OFFSET STRING MOV CX,COUNT MOV AL,‘&’ CLD
REPNZ SCASB JNZ NEXT
DEC DI
MOV BYTE PTR[DI],‘ ’ NEXT:Mov ah,4ch Int 21h Code ends
End start
3.31 假设程序中数据定义如下:用串指令分别编写程序段。
(1)。用空格清除PRINT_LINE域。
(2)。在STUDENT_ADDR查找第一个‘—’ (3)。在STUDENT_ADDR查找最后一个‘—’ (4)。如果STUDENT_NAME域全是空格,填入‘*’
(5)。把STUDENT_NAME移到PRINT_LINE前30个字节中,把 STUDENT_ADDR移到PRINT_LINE后9个字节中。
答:(1)。用空格清除PRINT_LINE域。
Data segment
STUDENT_NAME DB 30 DUP(?) STUDENT_ADDR DB 9 DUP(?) PRINT_LINE DB 132 DUP(?)
Data ends
Code segment
Assume cs:code, ds:data,es:data, Start: mov ax,data Mov ds,ax Mov es,ax
MOV DI,OFFSET PRINT_LINE MOV CX,132 MOV AL,‘ ’ CLD
REP STOSB
Mov ah,4ch Int 21h Code ends
End start (2)。在STUDENT_ADDR查找第一个‘—’ Data segment
STUDENT_NAME DB 30 DUP(?)
STUDENT_ADDR DB ‘SPAC——E EXP—LORESI—NC’ Cont equ $-student_addr PRINT_LINE DB 132 DUP(?) Data ends Code segment
Assume cs:code, es:data, Start: mov ax,data Mov es,ax
MOV DI,OFFSET PRINT_LINE MOV CX,CONT MOV AL,‘—’ CLD
REPNZ SCASB JNZ NEXT
MOV DH,[DI-1] NEXT: Mov ah,4ch Int 21h Code ends
End start (3)。在STUDENT_ADDR查找最后一个‘—’
相关推荐: