当前位置:编程学习 > 汇编语言 >>

汇编语言编写用键盘输入十个数,统计这十个数中偶数的个数

追问:用键盘输入 采用int 16h 怎么做啊
答案:同学,我帮你完成了你的汇编程序,用键盘输入十个数,统计这十个数中偶数的个数,我附加的功能还可以输出这些偶数,你给我加点分嘛~~~~有问题可以hi我的哈~~~~~~~~~~~~~~
;**********************************************************
;-------------------------------
;宏定义
output MACRO string
        mov ah,09h
        lea dx,string          
        int 21h  
        ENDM  
;-------------------------------
;宏定义
;********************************数据段
data segment
          array db 0,0,0,0,0,0,0,0,0,0          ;数组开辟空间 
         array1 db 0,0,0,0,0,0,0,0,0,0 
        string1 db "Please input 10 numbers:$"  ;字符串以$结束
        string2 db "There is: $"       
        string3 db "  even numbers!$"           ;even numbers=偶数
        crlf db 13,10,,13,10,"$"                ;13回车,10换行
        data ends
;**********************************
;**********************************代码段
code segment
        assume ds:data,cs:code,         ;段对应关系的说明
        main proc far                   ;far子程序调用时的参数                
        start:         
                push ds
                sub ax,ax             ;清零
                push ax               ;压栈                
                mov ax,data           ;将数据传送如数据段
                mov ds,ax 
;---------------------------------------                
;主程序开始  
;---------------------------------------------------------        
;显示字符处string1的内容换行
        output string1 
        output crlf                     
;-----------------------------------------------------------
;键盘输入数字        
        mov bx,offset array     ;设定基址 
        mov si,0                ;循环计数设定        
   input:            
        mov ah,02h
        mov dl,20h              ;每隔数据间加上一个空格
        int 21h     
        mov ah,01h
        int 21h        
        cmp al,20h              ;20h=32d,ASCII中的空格键
        je  input               ;可以采用空格隔开
        mov [bx+si],al          ;将累加器中的数据传送到数组中保存起来
        inc si                  ;计数器加1
        cmp si,9
        jle input               ;小于等于8则继续输入(共9个数)  
;-------------------------------------------------
;计算偶数个数        
        mov di,00h                
        mov si,00h 
    again1: 
        mov bx,offset array 
        mov al,[bx+si]
        cbw 
        mov cl,02h               
        div cl
        cmp ah,00h              ;余数在ah若为偶数余数为0
        jne again2
        mov al,[bx+si] 
        mov bx,offset array1    ;设定基址 
        mov [bx+di],al  
        inc di                  ;计数加1
        inc si
        cmp si,09h
        jg next1
        jmp again1        
    again2:
        inc si
        cmp si,09h
        jg next1
        jmp again1          
;----------------------------------------------------------------
;显示"The even numbers is:  $"的内容换行
     next1: 
        output crlf 
        output string2
        mov ax,di
        add al,30h 
        mov dl,al
        mov ah,02h
        int 21h 
        output string3
         
        output crlf
        mov bx,offset array1    ;设定基址 
        mov si,00h  
     again3:
        mov al,[bx+si]
        mov dl,al
        mov ah,02h
        int 21h
        mov dl,20h
        mov ah,02h
        int 21h 
        inc si
        cmp si,di
        jne again3                          
        ret                    ;返回(return)  
   main endp                   ;主函数结束
;********************************************             
              code ends        ;代码段定义结束
              end  start       ;这个程序段全部结束,

上一个:汇编语言中,mov的字节数为多少,比如JNZ的字节数为75,那么MOV的字节数为多少呢!
下一个:用汇编语言怎么对几个储存在连续地址中的八位数求平均

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,