设100个无符号数,连续存放在以2000H为首地址的存储区中,编程统计奇数和偶数的个数 用汇编语言编程
汇编程序如下:
ZeroEQU42H;零的统计
NegetiveEQU41H;负数的统计
PositiveEQU40H;正数的统计
CountEQU100;比较个数
ORG0000H
LJMPMAIN
ORG0040H
Data_Filter:
PUSHPSW;函数调用时的现场保护
PUSHACC
MOVZero,#0
MOVNegetive,#0
MOVPositive,#0
MOVR2,#0
MOVDPTR,#0x2000
Loop:
MOVXA,@DPTR
CJNEA,#0,NonZero
INCZero
JMPNEXT
NonZero:
JCNeg
INCPositive
JMPNEXT
INCNegetive
NEXT:
INCDPTR
INCR2
CJNER2,#Count,Loop
POPACC;恢复现场
POPPSW
MAIN:
ACALLData_Filter
SJMP$;仅用于测试观察
本回答由网友推荐
编程统计寄存器AH中二进制0的个数,并存放在寄存器BH中?
在汇编语言中,可以使用指令 MOV 来将寄存器 AH 的值移动到寄存器 BH 中。接下来,可以使用汇编语言中的循环指令来检查 AH 中的每一位,如果某一位是 0,就将计数器加 1。最后,将计数器的值存储在寄存器 BH 中。MOV BH, 0; 将 BH 寄存器清零MOV CX, 8; 将 CX 寄存器设为 8,用于循环检查每一位SHR AH, 1; 右移 AH 寄存器的值,将最低位移到最高位JNC SKIP; 如果最高位不是 0,则跳过后面的操作INC BH; 如果最高位是 0,则将 BH 寄存器的值加 1LOOP LOOP; 循环检查下一位与位运算枚举即可MOV AL,01HAND AL,AHMUL AL,2ADD BH,1