汇编语言实验课:第八次记录

文章目录


实验要求

定义一组数,判断这一组数据中的正数,负数和0的个数

程序


DATAS SEGMENT
    table db 7,98,-98,158,10,133,-45,66,-134,-122,0,-33,0,-99,0
    a1 byte 'The number of positive numbers is:!'
    a2 byte 'The number of negative numbers is:!'
    a3 byte 'The number of 0 is:!'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
  
    mov bl,15     ;计数
    call count
    
    mov si,offset a1    ;调出提示信息
    call output1
 
    add al,48           ;显示正数的个数
    mov dl,al
    mov ah,2
    int 21h
    
    call control
    
    mov si,offset a2   
    call output1
    
    add ch,48          ;显示负数的个数
    mov dl,ch
    mov ah,2
    int 21h
    
    call control
    
    mov si,offset a3
    call output1
    
    add bh,48        ;显示零的个数
    mov dl,bh
    mov ah,2
    int 21h
    
    MOV AH,4CH
    INT 21H
    
    ;统计个数
count proc
    
     mov al,0    ;正数
     mov ch,0    ;负数
     mov bh,0    ;零
     mov cl,0    ;计数
     mov dh,0   
     mov si,offset table
LL:
     cmp [si],dh
     jz equal      ;相等
     js lown       ;负数
     jns highn     ;正数
highn:
     add al,1
     add cl,1
     add si,1
     cmp cl,bl
     jb  LL
     jmp cover
lown:
     add ch,1
     add cl,1
     add si,1
     cmp cl,bl
     jb  LL
     jmp cover
equal:
     add bh,1
     add si,1
     add cl,1
     cmp cl,bl
     jb  LL
     jmp cover
cover:  
      
  ret
count endp 
    
    
    ;输出函数
output1 proc     ;入口参数si
      
      push si
      push ax  
      push dx
      
o1:
      mov ax,[si] 
      cmp al,'!'    ;!为结束标志
      je oover
      mov dl,al
      mov ah,2
      int 21h
      add si,1
      jmp o1
    
oover:
       pop dx
       pop ax
       pop si
       ret
output1 endp
    
    ;回车换行
control proc
     
     push ax
     push dx
     
     mov dl,13
     mov ah,2
     int 21h
     mov dl,10
     mov ah,2
     int 21h
     
     pop dx
     pop ax
     
     ret
     
control endp
    
CODES ENDS
    END START















  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值