汇编学习笔记->统计奇偶数的个数

编译环境:emu8086
附:汇编常用跳转指令及其检测位
https://blog.csdn.net/c529283955/article/details/103015482


统计数组中奇数和偶数的个数

DATAS SEGMENT
    cnt_j db 0      ;奇数的个数
    cnt_o db 0      ;偶数的个数  
    n db 10         ;10个数
    num db 100,20,-3,7,6,30,1,200,-20,-30
    two db 2        ;注意此处是db
DATAS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS
START:
    MOV AX,DATAS
    MOV DS,AX
    MOV cl,n         ;设定循环次数
    MOV bx,offset num
    mov si,0         ;偏移
func:    
    mov al,bx[si]    ;将bx[si] mov 到al中,作为被除数
    mov ah,0
    idiv two         ;带符号的除法
    cmp ah,0         ;16/8位的除法运算后,余数存放在ah中,商存放在al中
    jz oushu         ;余数为0 跳转到oushu函数中
    jne jishu        ;ah中的数和0不相等,即余数不为0,跳转到jishu函数中
jishu:
    inc cnt_j        ;奇数的个数+1
    add si,1         ;偏移+1
    dec cl           ;循环次数-1
    jne func         ;循环次数!=0时继续跳转到func
    mov ah,4ch
    int 21h       
oushu:
    inc cnt_o        ;与上相同
    add si,1
    dec cl
    jne func
    mov ah,4ch
    int 21h    
CODES ENDS
END START


一些指令的说明

DIV 无符号数除法
IDIV 带符号数除法
格式:
DIV SRC
IDIV SRC
执行的操作:
字节操作(byte):
16位被除数在AX中,8位除数为原操作数,结果的8位商在AL中,8位余数在AH中。
(AL)←(AX)/(SRC)的商
(AH)←(AX)/(SRC)的余数

字操作(word):
32位被除数在DX,AX中。其中DX为高位字,16位除数为源操作数。
结果的16位商在AX中,16位余数在DX中。
(AX)←(DX,AX)/(SRC)的商
(DX)←(DX,AX)/(SRC)的余数


其余的在此处不做介绍,请自行查阅资料。

  • 11
    点赞
  • 83
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值