代码如下:
#include <stdio.h>
void main()
{
unsigned char ch,ch1,ch2;
//BYTE ch,ch1,ch2;
ch=0x20;
ch1=0x10;
_asm mov al,ch
_asm mov bl,ch1
_asm add al,bl
_asm mov ch2,al
printf("%x",ch2);
}
最后的输出是10,结果显然不对。。。有没有大佬帮忙解答一下。
你这代码真是见鬼,搞了半天,才搞清楚原因。
有一个寄存器叫做ch,正好和你的变量ch重名。
所以asm mov al, ch,移动的不是ch变量,而是ch寄存器
// Q764949.cpp : This file contains the 'main' function. Program execution begins and ends there.
//
#include <stdio.h>
void main()
{
unsigned char ch0, ch1, ch2;
//BYTE ch,ch1,ch2;
ch0 = 0x20;
ch1 = 0x10;
_asm mov al, ch0
_asm mov bl, ch1
_asm add al, bl
_asm mov ch2, al
printf("%x", ch2);
}