+ -
当前位置:首页 → 问答吧 → 汇编问题

汇编问题

时间:2010-12-17

来源:互联网

已知两个整数变量A和B,编程: (1)若两个数中有一个奇数,则将奇数存入ABUF单元,偶数存入BBUF单元 。(2)若两个数中均为奇数,则两数分别加1,并存回原变量处。(3)若两个数中均为偶数,则两数不变,程序段如下:
Data segment
Abuf db x1
Bbuf db x2
Data ends
Code segment
Assume cs:code,ds:data
Main proc far
Start: mov ax,data
  mov ds,ax
  mov al,abuf
  mov bl,bbuf
  xor al,bl
  test al,01h
  jz class
  test bl,01h
  jz exit
  xchg bl,abuf
  mov bbuf,bl
  jmp exit
Class:
  test bl,01h
  jz exit
  inc abuf
  inc bbuf
Exit:
  mov ah,4cH
  int 21H  
Main endp
Code ends
  end start

请问程序中的xor al,bl怎么解释?

作者: as86878   发布时间: 2010-12-17

xor al,bl 异或指令,op1,op2同为0,异为1
使用test al,01h判断奇偶性,偶数的d0位必然为0,奇数的d0位必然为1
xor 之后
若al为偶,则说明两数必然全为偶或全为奇
为奇,则说明两数中必然有一奇一偶

你可以做个实验
1,1
2,2
1,2
2,1
你的程序还少判断,当为xor为奇数,你只判断了bl是否为奇数,al你没考虑.

作者: va_zaixuexi   发布时间: 2010-12-17