一个16位的字第一位在哪,如fz t010100...

c语言或者汇编将一个字的内容 0x000f 左移16位变成一个双字内容 0x000f0000.急等!_百度知道
c语言或者汇编将一个字的内容 0x000f 左移16位变成一个双字内容 0x000f0000.急等!
asm mov ax.486
asm xor eax,16
asm shl eax,就是0x0000FFFF双字左移一位得到的结果为什么是0x0000FFFE;typedef unsigned long DWORD,cl
asm mov addr,达到移动16后得到数据0xFFFF0000;DWORD GenAddr(WORD x){
DWORD addr,而不是预想的0x0001FFFE,高位的1为何丢失;
asm ?如何保证移位时数据不丢失,x
asm mov cx,eax}问题重新澄清一下typedef unsigned int WORD
提问者采纳
b);%x,%x&typedef unsigned int WORD。#include&
return addr,a;return 0;&printf(&16.h&DWORD b = GenAddr(a);typedef unsigned long DWORD;}int main(){WORD a = 0x000f;DWORD GenAddr(WORD x){
DWORD addr = x&你还想怎么移呢?直接左移16位就可以的啊
我用你的程序得到的数据b是0和我的一样。为什么呢?
应该不会为0的啊。你把输出的printf中的格式x变为lx你看一下你的WORD和DWORD是多少字节的?是2个还是4个?用sizeof(WORD),sizeof(DWORD)输出一下看看。printf(&%d,%d\n&,sizeof(WORD),sizeof(DWORD));这样看下。#include&stdio.h&typedef unsigned short WORD;typedef unsigned long DWORD;DWORD GenAddr(WORD x){
DWORD addr = addr&&=16;}int main(){WORD a = 0x000f;DWORD b = GenAddr(a);printf(&%d,%d\n&,sizeof(WORD),sizeof(DWORD));printf(&%x,%lx&,a,b);return 0;}
提问者评价
谢谢。搞定
其他类似问题
其他1条回答
16,我的编译器上int是四字节的额;
return result:typedef unsigned short WORD,所以我稍微改一下你的定义;DWORD GenAddr(WORD x){
DWORD result = (DWORD)(0x0000ffff | x) &&lt,应该没有影响;typedef unsigned int DWORD
设定x=0x000f,得到的result为0.请帮忙分析原因。tks
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁EDA与VHDL 实验报告--16位cpu 设计_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
评价文档:
24页免费20页1下载券99页免费39页5下载券95页免费58页免费66页免费50页免费19页免费58页免费
喜欢此文档的还喜欢39页5下载券7页免费47页5下载券65页免费28页1下载券
EDA与VHDL 实验报告--16位cpu 设计|自​己​照​着​书​做​的​,​代​码​可​能​有​那​么​一​点​点​问​题​,​在​项​目​中​改​了​,​不​记​得​在​这​里​改​了​没​有
把文档贴到Blog、BBS或个人站等:
普通尺寸(450*500pix)
较大尺寸(630*500pix)
你可能喜欢

我要回帖

更多关于 fz t01010 的文章

 

随机推荐