實驗14 訪問CMOS RAM顯示當前日期和時間

2021-08-08 10:55:39 字數 1937 閱讀 4391

下面的**實現的功能是實時的顯示時間,顯示的效果就如同乙個電子時鐘,這個**來自於「網易雲課堂」講彙編的一位老師(從0開始,講的非常的好),這段**老師寫的太好了,貼在下面學習效仿一下:

assume cs:code, ds:data, ss:stack

data segment

db 128 dup(0)

data ends

stack segment stack

db 128 dup(0)

stack ends

code segment

time_style db 'yy/mm/dd hh:mm:ss', 0

time_cmos db 9,8,7,4,2,0

start:

mov ax, stack

mov ss, ax

mov sp, 128

call init_reg

call show_clock

mov ax, 4c00h

int 21h

;----------------------------

show_clock:

call show_time_style

showtime:

mov si, offset time_cmos

mov di, 160*10+30*2

mov cx, 6

showdate:

mov al, ds:[si]

out 70h, al

in al, 71h

mov ah, al

shr ah, 1

shr ah, 1

shr ah, 1

shr ah, 1

and al, 00001111b

add ah, 30h

add al, 30h

mov es:[di], ah

mov es:[di+2], al

inc si

add di, 6

loop showdate

jmp showtime

ret;----------------------------

init_reg:

mov bx, 0b800h

mov es, bx

mov bx, cs

mov ds, bx

ret;----------------------------

show_string:

push dx

push ds

push es

push si

push di

showstring:

mov dl, ds:[si]

cmp dl, 0

je showstringret

mov es:[di], dl

add di, 2

inc si

jmp showstring

showstringret:

pop di

pop si

pop es

pop ds

pop dx

ret;---------------------------

show_time_style:

mov si, offset time_style

mov di, 160*10+30*2

call show_string

retcode ends

end start

體會:這段**雖然初看起來有點繞,但是使用了模組化的思想,這裡已經體現出大型程式模組化的影子;同事在**跳轉時,注意是怎樣在上下文之間切換的,思考這種切換技巧。

實驗結果:

組合語言 實驗14 訪問CMOS RAM

是什麼?存放計算機開機必備的一些資料的硬體,由bios basic input output system 呼叫其資料。怎麼用?首先要理解埠的概念,在計算機中,與cpu可以訪問的資料的位置可以有一下三種 儲存器 暫存器 埠。而埠的另一端是晶元,即cpu通過埠與其他晶元相連。在這些晶元中,都有一組可供...

組合語言 實驗14 訪問CMOS RAM

程式設計,以 年 月 日 時 分 秒 的格式,顯示當前的日期 時間。assume cs code,ds data data segment db 2000 00 00 00 00 00 0 db 9,8,7,4,2,0 data ends code segment start mov ax,data...

組合語言 實驗14 訪問CMOS RAM

是什麼?存放計算機開機必備的一些資料的硬體,由bios basic input output system 呼叫其資料。怎麼用?首先要理解埠的概念,在計算機中,與cpu可以訪問的資料的位置可以有一下三種 儲存器 暫存器 埠。而埠的另一端是晶元,即cpu通過埠與其他晶元相連。在這些晶元中,都有一組可供...