1樓:
;太長了
code segment
assume cs:code,ds:codeorg 100h
start:
push cs
pop ds
mov ax,3
int 10h
mov ax,0b800h
mov es,ax
cldq0:lea dx,tips ;提示輸入時間mov ah,9
int 21h
;輸入當前時、分、秒值
call input_bcd
mov hh,al
mov ax,0e3ah ;':'
int 10h
call input_bcd
mov mm,al
mov ax,0e3ah ;':'
int 10h
call input_bcd
mov dh,al
mov ch,hh
cmp ch,23h
ja q1
mov cl,mm
cmp cl,59h
ja q1
cmp dh,59h
jbe q2
q1:lea dx,err
mov ah,9
int 21h
jmp q0
q2:mov ah,3
int 1ah
call xssj
mov ah,4ch
int 21h
input_bcd:
mov cl,4
call key
shl al,cl
mov dl,al
call key
add al,dl
retkey:
mov ah,0
int 16h
cmp al,'0'
jb key
cmp al,'9'
ja key
mov ah,0eh
int 10h
sub al,'0'
retxssj:
mov di,(80*10+30)*2
t1:mov ah,04 ;cx=2009 dx=0222int 1ah;讀取日期
;出口引數:cx=年,dx=月/日
mov al,ch;顯示年
call disp
mov al,cl
call disp
mov al,'-'
stosb
mov al,0ah;綠色
stosb
mov al,dh;顯示月
call disp
mov al,'-'
stosb
mov al,0ah;綠色
stosb
mov al,dl;顯示日
call disp
mov al,20h
stosb
mov al,0ah;綠色
stosb
mov ah,02 ;cx=1252 dx=0300int 1ah;讀取當前時間
;出口引數:cx=時/分;dh=秒
mov al,ch;顯示時
call disp
mov al,':'
stosb
mov al,0ah;綠色
stosb
mov al,cl;顯示分
call disp
mov al,':'
stosb
mov al,0ah;綠色
stosb
mov al,dh;顯示秒
call disp
mov ah,01
int 16h;讀鍵盤
jz xssj ;無字元輸入,繼續顯示時間mov ah,0
int 16h
cmp al,1bh
jnz xssj
retdisp:
push cx
mov ah,al
mov cx,4
shr al,cl
and al,0fh
or al,30h
stosb
mov al,0ah;綠色
stosb
mov al,ah
and al,0fh
or al,30h
stosb
mov al,0ah;綠色
stosb
pop cx
rettips db ' input current time'
db 0dh,0ah,' hh:mm:ss $'
err db 0dh,0ah,'input error!',0dh,0ah,'$'
hh db 0
mm db 0
code ends
end start
2樓:頹廢_小胖
我的思路是用死迴圈在埠讀寫時間並顯示,一輸入完數字除了用埠改寫時間之外,再立即修改鍵盤中斷。等按下去退出就恢復原鍵盤中斷入口。
彙編高手幫幫忙,彙編高手幫幫忙
如果是學組合語言專門的就是 ibm pc組合語言程式設計 清華 沈美明的那本 至於16為還是32位這個好象都是要學的,不過現在一般都是16位的吧。至於那個tasm5.0,我只聽說過masm5.0 不好意思,不過現在彙編應該用的比較多的是masm5.0下面有使用方法 1.開始 執行 輸入 cmd 沒有...
高分彙編程式設計,高手來幫幫忙
有彙編和c轉化的軟體 for i 0 i 9 i for j i 1 j 10 j if a i a j 這個c是對的不過你還少了點東西.下面的彙編我倒是看的很對但是有點還是沒有看明白.你的意思是每次si和di都因該加2是在儲存資料時佔用的2個位元組. data segment assume ds ...