FZU汇编作业 实验(五)

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
     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值