编写一个子程序统计数据段中定义的前8行数据中每行字节数据为0的个数。

 

在数据段中定义如下数据:
data segment
        db 68h, 10h, 0A7h, 00h, 8Bh, 01h, 70h, 00h
        db 16h, 00h, 0A7h, 03h, 8Bh, 01h, 70h, 00h
        db 8Bh, 01h, 70h,  00h,0CCh, 06h, 10h, 02h
        db 53h, 07h, 010h, 02h,0FFh, 03h, 10h, 02h
        db 59h, 07h, 10h,  02h, 0Ah, 04h, 10h, 02h
        db 3Ah, 00h, 0A7h, 03h, 54h, 00h,0A7h, 03h
        db 6Eh, 00h, 0A7h, 03h, 88h, 00h,0A7h, 03h
        db 0A2h,00h, 0A7h, 03h,0FFh, 03h, 10h, 02h

 db 0,0,0,0,0,0,0,0
data ends

  编写一个程序统计数据段中定义的前8行数据中每行字节数据为0的个数。统计后,将个数填充在第9行对应的位置。 在程序中需要需要编写一个子程序,该子程序定义如下:

    子程序定义:
 名称:count
 功能:统计一段内存中字节数据为某个标准值的个数
 参数:ds:si指向数据起始位置
       cx是需要统计的字节数
       al为标准值
 返回值:dx 返回字节数据为0的个数

assume cs:code ,ds:data
data segment
        db 68h, 10h, 0A7h, 00h, 8Bh, 01h, 70h, 00h
        db 16h, 00h, 0A7h, 03h, 8Bh, 01h, 70h, 00h
        db 8Bh, 01h, 70h,  00h,0CCh, 06h, 10h, 02h
        db 53h, 07h, 010h, 02h,0FFh, 03h, 10h, 02h
        db 59h, 07h, 10h,  02h, 0Ah, 04h, 10h, 02h
        db 3Ah, 00h, 0A7h, 03h, 54h, 00h,0A7h, 03h
        db 6Eh, 00h, 0A7h, 03h, 88h, 00h,0A7h, 03h
        db 0A2h,00h, 0A7h, 03h,0FFh, 03h, 10h, 02h

 db 0,0,0,0,0,0,0,0
data ends
code segment
start:mov ax,data
        mov ds,ax
 mov si,0
 mov di,0
 mov cx,8
    s0:call count
     
      mov byte ptr ds:[di+64],dx
     inc di
     mov dx,0
      loop s0

 mov ah,4ch
 int 21h
; 子程序定义:
; 名称:count
; 功能:统计一段内存中字节数据为某个标准值的个数
; 参数:ds:si指向数据起始位置
;       cx是需要统计的字节数
;       al为标准值
; 返回值:dx 返回字节数据为0的个数
count:
          push cx
   push ax

          mov dx,0
           mov cx,8
      s:  mov al,ds:[si]
           mov ah,0
    cmp ax,0 ;比较为0 跳转
    je ok
    dec cx
    inc si
          
          jcxz   ok2
    jmp  short  s
    
  ok:inc dx
     dec cx
     inc si
     jcxz ok2
    jmp  short  s  

    
ok2:pop ax
      pop cx
      
       ret    
code ends
end start

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值