實驗任務:
編一子,主程式,其功能要求如下:
子程式的入口引數為一ascii碼字元,它將該字元的ascii碼分部以十六進製制和二進位制形式顯示出來。如主程式呼叫該子程式時,若傳送給子程式的ascii碼為42h,則顯示資訊如下:
b: 42h
01000010
主程式的功能是反覆從鍵盤輸入字元,然後呼叫上述子程式,用十六進製制及二進位制形式顯示出鍵入字元的ascii碼,當輸入esc時返回dos。
**(測試可用,排版問題自行調整):
code segment
start:mov ah,07h
;鍵盤輸入無回顯
int 21h
cmp al,00011011b
je _ok
push ax
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
pop ax
call _ascii
;顯示要求規則
mov ah,02h
mov dl,0ah
int 21h
mov ah,02h
mov dl,0dh
int 21h
ret
;不返回作業系統
_ascii:push ax
push dx
push ax
mov dl,al
;ascii字元
mov ah,02h
int 21h
mov dl,3ah
;:號mov ah,02h
int 21h
call _blank
pop ax
call _asciito16
;顯示ascii碼的16進製制值
call _blank
call _asciitob
;顯示ascii碼的二進位制值
pop dx
pop ax
ret_ok:mov ax,4c00h
int 21h
_asciitob:push cx
;此函式完成二進位制致ascii碼的轉換
push bx
push ax
push di
mov di,7
mov bx,10000000b
mov cx,8
change_s:push cx
push ax
mov cx,di
and al,bl
shr bl,1
shr al,cl
add al,30h
mov dl,al
mov ah,02h
int 21h
dec di
pop ax
pop cx
loop change_s
pop di
pop ax
pop bx
pop cx
ret_asciito16:push ax
push bx
push cx
push dx
push ax
mov cx,4
;ascii碼高位字母
shr al,cl
cmp al,0ah
jnb _tzh
add al,30h
tzh:mov dl,al
mov ah,02h
int 21h
pop ax
and al,00001111b
;ascii碼低位字母
cmp al,0ah
jnb _tzl
add al,30h
tzl:mov dl,al
mov ah,02h
int 21h
mov dl,'h'
;顯示h
mov ah,02h
int 21h
pop dx
pop cx
pop bx
pop ax
ret_blank:push ax
;寫空格函式
push cx
mov cx,4
s_blank:mov dl,00h
mov ah,02h
int 21h
loop s_blank
pop cx
pop ax
ret_tzh:add al,37h
;調整成正確的ascii碼
jmp tzh
_tzl:add al,37h
;調整成正確的ascii碼
jmp tzl
code ends
end start
OGRE 1 7 例子程式分析
如果你自己都不清楚所談論的東西,就根本不可能精確的描述它 馮諾依曼 今天我就試著來表述一件眾人皆知的事情,以測試自己到底有沒有明白這件事情。ogre 是著名的設計模式大師,這已是不爭的事實。可以說 ogre 裡將設計模式用得淋漓盡致。在這裡我就不批判設計模式該不該用了。反正 ogre 已經用了,並且...
OGRE 1 7 例子程式分析
如果你自己都不清楚所談論的東西,就根本不可能精確的描述它 馮諾依曼 今天我就試著來表述一件眾人皆知的事情,以測試自己到底有沒有明白這件事情。ogre是著名的設計模式大師,這已是不爭的事實。可以說ogre裡將設計模式用得淋漓盡致。在這裡我就不批判設計模式該不該用了。反正ogre已經用了,並且沒有出現什...
子程式過載
子程式過載是指有一系列具有相同的子程式名稱,但有不同的型別和數目的引數的子程式,它們用於完成不同但相關的操作。在程式中呼叫某個過載的子程式時,編譯器將根據呼叫的子程式及其所使用的引數序列和數目來確定那個子程式將被執行。1.在編寫過載子程式時應注意各子程式的引數個數和引數型別的差異,否則編譯器將不能正...