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

编译环境: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)的余数


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

发布了19 篇原创文章 · 获赞 2 · 访问量 4188

猜你喜欢

转载自blog.csdn.net/c529283955/article/details/103396709