模拟试卷三 下载本文

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