当前位置:首页 > 微机原理与接口技术习题答案4
INT ADD CALL LOOP
21H SI,2 WAIT L1
这里,WAIT为延时子程序,用于在显示信息之间的停顿。
23. 编写程序实现将包含20个数据的数组ARRAY分成两个数组:正数数组ARRAYP和负数数组ARRAYN,并分别将这两个数组中数据的个数显示出来。
解:先编写一个子程序DISPALD,完成以3位十进制数形式显示出AL的内容。
DISPALD PROC NEAR
PUSH AX PUSH CX PUSH DX XOR AH,AH MOV CL,100 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2 INT 21H POP AX MOV AL,AH XOR AH,AH MOV CL,10 DIV CL PUSH AX MOV DL,30H ADD DL,AL MOV AH,2
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
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:
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
共分享92篇相关文档