1、上机题目:将从键盘输入的N个无符号数保存到数组DAT ,找出N个无符号数中的偶数存放到数组P,统计并在终端上显示数组P的数据个数no。
DAT DW X1,……,XN
P DW n dup (?)
no DW ?
要求:1、求偶数数组P的功能用子程序实现
2、画主程序及子程序流程图
3、熟练掌握综合程序设计方法
用上伪指令,编起来跟C就没啥区别了。
.while 条件
.endw
.if 条件
.endif
代码:
INCLUDE IRVINE32.INC
.DATA
N WORD 10 ;
DAT DWORD 10 DUP(?) ;
P DWORD 10 DUP(?) ;
NO DWORD ?
.CODE
MAIN PROC
CALL WRITENUM ;
CALL FINDNUM ;
MOV EAX,NO ;
CALL WRITEINT ;
exit
MAIN ENDP
WRITENUM PROC
MOV CX,N ;
MOV ESI,0 ;
.WHILE CX>0
DEC CX ;
CALL READINT ;
MOV DAT[ESI],EAX ;
ADD ESI,4 ;
.ENDW
RET
WRITENUM ENDP
FINDNUM PROC
MOV ESI,0 ;
MOV EDI,0 ;
MOV EBX,0 ;
MOV CX,N ;
.WHILE CX>0 ;
DEC CX ;
TEST DAT[ESI],1 ;
JNZ NEXT ;
MOV EAX,DAT[ESI] ;
MOV P[EDI],EAX ;
ADD EDI,4 ;
INC EBX ;
NEXT:
ADD ESI,4 ;
.ENDW
MOV NO,EBX ;
RET
FINDNUM ENDP
END MAIN
2、上机题目:将从键盘输入的N个有符号数保存到数组TAB ,找出N个有符号数中绝对值大于X的最小负奇数存放到Min单元,如果没有找到则Min单元存放0。在终端上显示Min的绝对值。
TAB DD X1,……,XN
X DD xx(无符号数,自己设定)
Min DD ?
要求:1、求数据Min的功能用子程序实现
2、画主程序及子程序流程图
3、熟练掌握综合程序设计方法
代码:
INCLUDE IRVINE32.INC
.DATA
N BYTE 10 ;
ZERO SDWORD 0 ;
DAT SDWORD 10 DUP(?)
X DWORD 5 ;
MIN SDWORD 0 ;
.CODE
MAIN PROC
CALL READNUM ;
CALL FINDNUM ;
CALL WRITENUM ;
exit
MAIN ENDP
READNUM PROC
MOV CL,N ;
MOV ESI,0
.WHILE CL>0
DEC CL ;
CALL READINT ;
MOV DAT[ESI],EAX ;
ADD ESI,4 ;
.ENDW
RET
READNUM ENDP
FINDNUM PROC
MOV CL,N ;
MOV ESI,0 ;
.WHILE CL>0 ;
DEC CL ;
MOV EAX,DAT[ESI] ;
.IF EAX<ZERO
NEG EAX ;
.IF EAX>X ;
TEST EAX,1 ;
JZ NEXT ;
MOV EAX,DAT[ESI] ;
.IF EAX<MIN
MOV MIN,EAX ;
NEXT:
.ENDIF
.ENDIF
.ENDIF
ADD ESI,4 ;
.ENDW
RET
FINDNUM ENDP
WRITENUM PROC
MOV EAX,MIN ;
CALL WRITEINT ;
RET
WRITENUM ENDP
END MAIN