MOV AX,EXTRA MOV ES,AX
(LEA SI,DOURCE_STRING ) LEA DI,DEST_STRING CLD MOV CX,20
( REP MOVSB ) MOV AH,4CH INT 21H CODE ENDS END START 六、编程题(共22分)
1.编写程序段,将标志寄存器中的高8位和低8位互换。(5分)
PUSHF POP AX XCHG AH, AL PUSH AX POPF
2.数据区定义如下: DATA SEGMENT
ARRAY DB 23H,24H,25H,26H DISP DB 30 DUP(‘ ’),‘$’ DATA SEGMENT
编写程序段,将此数据区复制10次,并将结果显示出来。(5分)
CLD
LEA ST,ARRAY LEA DI,DISP MOV MOV CX,10 REP MOVSB MOV AH,09H INT 21H
3.数据区中首地址为ARRAY的N字数组,定义如下: DATA SEGMENT
ARRAY DW 23,-20,130,-5,…,326,-2110 ;表示N个带符号数 CUNT EQU $ -ARRAY
RESUT DB? ;存放正数的个数 DB? ;存放‘0’的个数 DB? ;存放‘负数’的个数 DTAT ENDS
试编写一个程序,统计ARRAY数据区中正数,负数及“0”的个数,结果送入RESUT起始的三个字节单元中(12分)。
DATA DEGMENT
ARRAY DW 23,-20,13,-5 ,?,326,-2110 COUT EQU $ -ARRAY
RESUT DB? DB? DB? DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AX,0 MOV BX,0 LEA SI,ARRAY MOV CX,CUNT SHR CX,1
LOP: CMP WORD PTR[SI],0 JZ ZERO JNS PLUS JINC BL JMP NEXT ZERO: INC AH JMP NEXT PLUS: INC AL
NEXT: ADD SI,TYPE ARRAY LOOP LOP MOV RESUT,AL MOV RESUT+1,AH MOV RESUT+2,BL MOV AH, 4CH INT 21H CODE ENDS END START