① 編寫程序,將內部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) );
這是將一個數組的所以分量設置成零的很便捷的方法。