C语言和汇编语言把数据写入内存有什么区别

汇编语言向内存写入数据0x5(0b101)是否只修改开始的三位,而不动其他内存的数据?但是C语言要修改却需要一次修改sizeof(type)字节的数据,除非用|和&才能不... 汇编语言向内存写入数据0x5(0b101)是否只修改开始的三位,而不动其他内存的数据?
但是C语言要修改却需要一次修改sizeof(type)字节的数据,除非用|和&才能不修改其他位。
汇编语言根据寄存器或者明确的字符类型指令来修改内存,上面str r0,[addr]应该会修改32位内存地址
展开
 我来答
四海一叶秋
2018-09-22 · TA获得超过4306个赞
知道大有可为答主
回答量:3481
采纳率:88%
帮助的人:383万
展开全部
都一样吧。x86上最小都是byte,move byte ptr,修改位用xor,and之类。跟c语言最小char,&&和^一样。arm的话有改半字的STRH LDRH,c语言的话要配合&0xf修改。
追答
&和^
&0xf0
永恒pascal
2018-10-08 · TA获得超过4357个赞
知道大有可为答主
回答量:3902
采纳率:93%
帮助的人:667万
展开全部
内存的数据是以字节为单位操作的。不论是什么语言,都只能以字节的方式操作内存数据,字、双字、数组、字符串等说到底都是在处理内存中的字节,而不可能处理单独的二进制位(如 and bype ptr ds:[si],15,好像是在对高4位清零,但它操作的还是字节)。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友2ebe1e4f3
2018-10-21 · TA获得超过1.3万个赞
知道大有可为答主
回答量:9245
采纳率:52%
帮助的人:3297万
展开全部
你理解错了,0b101实际上是0b00000101,101不是高三位,而是低三位,C语言和汇编语言最终都是翻译成二进制的机器语言的。所以本质上没有差别,只是因为语法不同,所以写法也不同。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
姣过手飘找人1Q
2018-09-23 · TA获得超过1904个赞
知道大有可为答主
回答量:2466
采纳率:70%
帮助的人:362万
展开全部
他们的指令集,寻址方式不同,相当于两个机器各有各的操作方式
汇编语言是低级语言,在编写程序的时候会把根据不同的情况指定使用不同的寻址方式,能够对内存和CPU里的通用寄存器直接操纵。不同的计算机系列会有不同的汇编语言
而C语言是高级语言,可以实现跨平台。编写程序无需指定CPU的指令执行情况,一段程序可以在不同体系结构的计算机上使用
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
藤原子大雄
2018-11-04 · TA获得超过7197个赞
知道大有可为答主
回答量:6977
采纳率:82%
帮助的人:1757万
展开全部
单片机C语言里数组一般都是用作静态的,跟汇编里的查找表功能一样,不需要输入输出。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式