① 编写程序,将内部RAM 20H~2FH单元内容的低4位清0高4位不变
MOVR0,#20H//将20H写入R0寄存器中①
LOOP:
MOVA,@R0//将R0寄存器中数据代表的地址中的数据写入累加器A②
ANLA,#0F0H//将累加器A中的数据与上F0H③
MOV@R0,A//将累加器A中的数据写入寄存器A中数据代表的地址中④
INCR0//R0中的数据加1⑤
CJNER0,#30H,LOOP//判断R0是不是30H,不等于则跳到LOOP继续执行⑥
...
其中指令原型:
①MOVRn,#data 立即数送入寄存器
②MOVA,@Ri (i=0,1) 间接RAM 中的数据送入累加器
③ANLA,#data 累加器与立即数相“与
④MOV@Ri,A(i=0,1) 累加器内容送间接RAM 单元
⑤INCRn 寄存器加1
⑥CJNERn,#data,rel 寄存器与立即数比较,不相等则转移
参考地址:https://wenku..com/view/d42a3c59312b3169a551a407.html
② 寄存器怎么清零呢
OR AX,0F000H ; AX高4位置1
AND AX,0FFFCH;第0,1位清0
XOR AX,0CH; 第2,3位取反
③ 写一指令序列完成将AX寄存器的最低4位置1,最高3位清0,第7、8、9位取反,其余位不变。
【解】: OR AX, 000FH (OR AX, 0000 0000 0000 1111 B) AND AX, 1FFFH (AND AX, 0001 1111 1111 1111 B) XOR AX, 01C0H (XOR AX, 0000 0001 1100 0000 B)
④ 如何将单片机20h到2fh低四位清零高四位不变 用c语言编程
//楼上提出了主要思路,尽管他用了清零32位中的低16位
#include
unsigned
char
bdata
*bitaddr
_at_
0x20
void
main()
{
unsigned
char
i;
for(i=0;i<=20;i++)
{
bitaddr+=i;
*bitaddr&=0xf0;
}
}
//
没调试,自己用keil调试一下
⑤ 将CX寄存器低4位清零的正确指令是
AND是按位与,与操作是:0×0 = 0, 0×1 = 0, 1×0 = 0, 1×1 = 1,就是0与任何数(0或1)都是0,1与任何数(0或1)都是原来的数,0FFF0H写成二进制就是 1111 1111 1111 0000,它与CX后,CX的最后四位是0,其余12位不变。
⑥ 单片机C语言中P1=P1<<4啥意思
=:是赋值运算符
<<:是整数位操作运算符中的左移运算符
p1=p1<<4:将p1的二进制位数向左移动四位,将运算结果赋值给变量p1。
⑦ 请问C语言中 给你一个整数int a 请问怎么把第4位清零 a不知道有几位 希望高手解答
#include "stdio.h"
void main(){
int x,y,j,a,i=0,t[10];
scanf("%d",&a);
x=a;y=a;//计算位数,存储各个数字
for(;a>0;i++){
a=a/10;
t[i]=x%10;
x=(x-t[i])/10;
}
printf("%d\n",t[i-4]);//显示清除的数字
for(j=1;j<i-3;j++){
t[i-4]=t[i-4]*10;//还原被清除数字的权
}
printf("%d\n",y-t[i-4]);//显示最后的数字
}//多设计个变量,思路就简单了~~~
⑧ 汇编实现:1,AL寄存器的低4位清零;2BL寄存器低4位置1;3,CL寄存器低4位取反。要求完整代码及详细解说。
and al,0f0h;al寄存器与上0f0h
or bl,0fh;bl寄存器或上0fh
xor cl,0fh;cl寄存器异或0fh
这些操作主要是对逻辑运算应用的掌握。
and与指令:主要是可以让某一位变成0;想让哪一位变成0,就让与的数据对应位为0;
or或指令:主要是让某一位变成1;想让哪一位变成1,就让或的数据对应位为1;
xor以后指令:主要是让某一位变成相反的;想让哪一位变成相反的,就让其异或的数据对应位为1;
⑨ 怎样使AX寄存器的低四位清零,其余位不变
方法有很多种,以下仅列举两种以作参考:
1. MOV AL, 0
2. AND AX, FF00H
太久没写汇编了,应该可以的.
⑩ 用C语言初始化的时候,怎么把所有的寄存器清零!
#include <string.h>
void *memset( void *buffer, int ch, size_t count );
功能: 函数拷贝ch 到buffer 从头开始的count 个字符里, 并返回buffer指针。 memset() 可以应用在将一段内存初始化为某个值。例如:
memset( the_array, '\0', sizeof(the_array) );
这是将一个数组的所以分量设置成零的很便捷的方法。