微机原理习题答案1234章 下载本文

INT 21H POP AX MOV DL,30H ADD DL,AH MOV AH,2 INT 21H POP DX POP CX POP AX RET

DISPALD ENDP

在此基础上,根据题目要求,需要用到3个指针:SI指向源数组ARRAY,DI指向正数数组ARRAYP,BX指向负数数组ARRAYN。

MOV XOR LEA LEA LEA MOV AND JS MOV INC INC JMP MOV INC INC INC

CX,20 DX,DX SI,ARRAY DI,ARRAYP BX,ARRAYN AL,[SI] AL,AL L2 [DI],AL DI DL L3 [BX],AL BX DH SI

- 36 -

L1:

L2:

L3:

LOOP MOV CALL MOV CALL

L1 AL,DL DISPALD AL,DH DISPALD

24. 编写程序实现求缓冲区BUFFER的100个字中的最小偶数(存入AX)。 解:设BUFFER中存放的是有符号数。 L1: L2:

MOV CX,100 LEA SI,BUFFER MOV AX, 7FFFH AND WORD PTR [SI],1 JNZ L2 CMP [SI],AX JGE L2 MOV AX,[SI] ADD SI,2 LOOP L1

225. 编写程序实现求级数1解:BL用于存放项数。

?22???n2??的前n项和刚大于2000的项数n。

STACK SEGMENT STACK 'STACK' DW 100H DUP(?) TOP

LABEL WORD

STACK ENDS DATA SEGMENT DB 100H DUP(?) DATA ENDS CODE SEGMENT

ASSUME CS:CODE, DS:DATA, ES:DATA, SS:STACK START:

- 37 -

MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX LEA SP,TOP MOV BL,1 MOV CX,0 COUNT:

MOV AL, BL MUL BL ADD CX,AX CMP CX,2000 JA EXIT INC BL JMP COUNT

EXIT:

26. 定义一条宏指令,实现将指定数据段的段地址传送到段寄存器ES或DS的功能。 解:

27. 定义一条宏指令,实现从键盘中输入一个字符串(利用INT 21H的09号功能)。 28. 定义一条宏指令,实现在屏幕上输出回车、换行。 29. 利用其它指令完成与下列指令一样的功能:

(1)REP MOVSB; (3)REP STOSB;

解:设DF=0 (1)

(2)REP LODSB; (4)REP SCASB。

L1: MOV AL,[SI]

MOV ES:[DI],AL INC INC

SI DI

- 38 -

LOOP L1

(2)

L1: MOV AL,[SI]

INC

SI

LOOP L1

(3)

L1: MOV ES:[DI],AL

INC

DI

LOOP L1

(4)

L1: MOV AL,[SI]

CMP AL,ES:[DI] INC INC

SI DI

LOOP L1

30. 设在数据段中定义了:

STR1 DB ‘ASSEMBLE LANGUAGE’ STR2 DB 20 DUP(?) 利用字符串指令编写程序段实现:

(1)从左到右将STR1中的字符串传送到STR2; (2)从右到左将STR1中的字符串传送到STR2; (3)将STR1中的第6个和第7个字节装入DX;

(4)扫描STR1字符串中有无空格,如有则将第一个空格符的地址传送到SI。 解: STR1中有17个字符(含一个空格),设DS和ES均指向STR1和STR2所在的段。 (1)

CLD MOV LEA LEA REP MOV LEA LEA

CX,17 SI,STR1 DI,STR2 MOVSB CX,17 SI,STR1 DI,STR2

- 39 -

(2)