inc si指向下一位16進製制數
pop cx恢復迴圈計數器
loop lp4位16進製制數處理完否?
mov ah,4ch ;程式結束
int 21h
disp proc near
mov al,[si取出1位16進製制數的ascii碼
sub al,30h
cmp al,9
jbe disp10~9?
sub al,7
disp1: mov cl,4
rol al,clal的低4位移到高4位,準備逐位處理每位2進製數
mov cx,4
lop: rol al,1
jc one
mov dl,'0'
jmp disp2
one: mov dl,'1'
disp2: push axal中內容未處理完,需要保護
mov ah,2顯示1位二進位制數
int 21h
pop ax恢復al
loop lop
retdisp endp
end六、結果分析與除錯
1. 最初發現每位16進製制數都顯示成『1000』,單步執行程式,結果發現是子程式disp中未保護al,進棧保護後即解決。
2. 上述程式經彙編連線後執行,顯示提示
please input 4 heximal digitals(0-f):
輸入4位16進製制數如1234,在下一行顯示出正確結果:
0001001000110100
輸入較大的數如abcd,結果輸出為
1010101111001101
基本可以確定程式正確。
3. 程式鍵盤輸入16進製制數,如果大於9,可能有大寫、小寫的問題,程式中只處理了大寫的a~f,對於小寫的a-f,程式處理結果仍然正確,因為大寫、小寫字母的ascii碼只有高4位有區別,而程式中只處理低4位,結果一樣。
七、結論
1. 本實驗程式中,主程式用迴圈來控制4位16進製制數的處理,子程式中用迴圈來控制4位2進製數的處理。
2. 用1號系統呼叫雖然也可以進行鍵盤輸入,但一次只能輸入1位,要加迴圈控制,不方便。本實驗程式中用了10號系統呼叫,更方便程式處理。
3. 輸入4位16進製制數時,如果是不合法的16進製制數,應當給予警示,並提示重新輸入,程式中未做此處理,可以很容易地增加這部分內容。
4. 系統呼叫類似於子程式呼叫,要用到通用暫存器。因而在使用系統呼叫時,要注意保護好程式中要使用的暫存器,如本實驗程式中,主程式中迴圈結構裡的cx,子程式中的ax。
否則,會造成資料丟失。
報告人:張國安
日期:2008-4-12
實驗報告範例
實驗日期 中國石油大學大學物理實驗實驗報告成績 班級姓名同組者教師 岩芯電阻率的測量 特別說明 本文是一篇模擬實驗報告,重點是學習實驗報告的基本內容 格式要求 資料處理方法等,具體實驗內容與實驗實際要求內容可能不一致。資料處理必須有簡要計算過程。實驗目的 1 了解靈敏電流計的結構和工作原理。2 學習...
實驗報告範例
實驗名稱 常量 變數 函式和表示式的使用 實驗目的 1.掌握各種型別常量的表示方法 2.掌握變數的賦值方法 3.掌握常用函式的功能 格式和使用方法 4.掌握各種型別表示式的表示方法 實驗裝置 台式計算機一台 實驗日期 2011年3月日 一 實驗預習 實驗之前將教材2.4節的內容仔細看了一遍,了解了v...
實驗報告範例
中國石油大學 華東 程式設計實訓報告 選題名稱 專業班級 實習時間 實習地點 組長 學號 姓名 組員 說明 最好不要超過3個圖 圖1 開始遊戲 說明 主要寫用到的各型別的全域性變數 含義 1.g imonkeys 6 用乙個int型別的陣列來儲存猴子精靈編號 2.g flocation 6 用乙個浮...