1.輸入乙個無符號數,統計『0』的個數
unsigned int a;
int count;
printf("輸入乙個無符號整數:");
scanf("%u", &a);
_asm
2.輸入兩個字元(a7a6…a1a0和b7b6…b1b0),合併為16位無符號整數(a7b7a6b6…a1b1a0b0)。
char a, b;
unsigned short i;
printf("輸入兩個字元: ");
scanf("%c%c", &a, &b);
printf("a = %#x\n", a);
printf("b = %#x\n", b);
_asm
printf("合併後的資料為:%u = %#x\n", i, i);
3.輸入兩個整數,取絕對值作為新資料,交換高16位。
int a, b;
printf("a = ");
scanf("%d", &a);
printf("b = ");
scanf("%d", &b);
_asm
printf("new_a = %d\nnew_b = %d\n", a, b);
4.統計字串的英文本母、十進位制數和其他字元的個數。
char s[81];
int count_a, count_b, count_c;
scanf("%s", s);
_asm
printf("%d %d %d\n", count_a, count_b, count_c);
5.將字串反轉為逆序。
char s[81], sr[81];
scanf("%s", s);
_asm
printf("%s", sr);
6.刪除字串的非英文本元。
char s[81], sn[81];
scanf("%s", s);
_asm
printf("%s", sn);
7.將字串的所有小寫字母轉換為大寫(子程式實現)。
char s[81];
scanf("%s", s);
_asm
printf("小寫轉大寫處理後的字串:%s\n", s);
return;
_asm
8.將十進位制數轉換為ascll碼字串(子程式實現)。
unsigned int a;
char s[81];
printf("a = ");
scanf("%u", &a);
_asm
printf("轉化為字串為: %s\n", s);
return;
_asm
note1:div reg 規則:
如果除數為 8 位,則被除數為 16 位,預設在 ax 中存放,運算結束後 al 儲存商, ah 儲存餘數;
如果除數為 16 位,則被除數為 32 位,dx 存放高 16 位,ax 存放低 16 位,運算結束後 ax 儲存商,dx 儲存餘數。
note2:div正確執行是有條件的。這個條件是:被除數的高一半,必須小於除數。否則會出現除法溢位中斷。
比如本程式中輸入的數大於等於655360(即2^16的10倍,高16位大於等於10)時就會程式中斷。
彙編學習(2)
我們希望像顯示器輸出一段資訊,那麼必須將這段資訊寫到視訊記憶體中,顯示卡才能將它輸出到顯示器上。要向視訊記憶體中寫入資料,必須知道顯存在記憶體位址空間中的位址。從圖中可以看出,從位址0 9ffff的記憶體單元中讀取資料,實際上就是在讀取主隨機儲存器中的資料 向位址a0000 bffff的記憶體單元中...
彙編學習2
通過編寫乙個分解整數並顯示的乙個程式,來學習一些彙編的基礎指令和語法 處理器在加電或者復位以後,如果硬碟是首選的啟動裝置,那麼rom bios將試圖讀取硬碟的0面0道1扇區。這就是主引導扇區,會先把主引導扇區的 指令集 載入到記憶體,然後處理器來執行,一般主引導扇區是用來啟動作業系統的。但此次,我們...
彙編學習記錄2
組合語言的思路 函式的工作原理 1 常用指令 為了照顧到沒學過匯程式設計序的同志們,這裡簡單介紹一下常見的幾種彙編指令。a add 加法指令,第乙個是目標運算元,第二個是源運算元,格式為 目標運算元 目標運算元 源運算元 b sub 減法指令,格式同 add c call 呼叫函式,一般函式的引數放...