組合語言 實驗14 訪問CMOS RAM

2021-10-06 18:29:02 字數 1330 閱讀 6995

程式設計,以"年/月/日 時:分:秒" 的格式,顯示當前的日期、時間。

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

mov ds,ax

mov si,2 ;

mov cx,6 ;迴圈6次,取出年月日時分秒

mov bx,20 ;從年份開始讀

s1:push cx

mov ax,[bx] ;依次從埠讀取資料

out 70h,al

in al,71h

mov ah,al

mov cl,4 ;右移

shr ah,cl ;確定十位

and al,00001111b ;個位

add al,30h ;把bcd碼變成對應的ascii碼

add ah,30h

mov ds:[si],ah ;資料放在ds:[si]儲存

inc si

mov ds:[si],al

inc bx ;bx迴圈來確定年月日時分秒

add si,2 ;相鄰時間單位間隔3個字元,前面已經有 inc si了

pop cx

loop s1

mov ax,0b800h ;資料寫到視訊記憶體

mov es,ax

mov di,120*12+40*2

mov si,0

show:

mov cl,ds:[si]

mov ch,0

jcxz ok

mov es:[di],cl

inc si

add di,2

jmp short show

ok:jmp short start ;不讓程式結束,這樣能產生動態時間

通過迴圈的方式,依次從data段中讀取年月日時分秒的位址。最後不用結束程式,而是用jmp short start的方式來使得程式可以動態顯示當前時間

有乙個注意點就是,在把時間資料寫到ds段時,不能用ax暫存器直接寫(會導致順序顛倒),要用ah和al分兩次寫入。

組合語言 實驗14 訪問CMOS RAM

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

組合語言 實驗14 訪問CMOS RAM

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

《組合語言》實驗 實驗

注意 db定義位元組型別變數,乙個位元組資料百佔1個位元組單度元,讀完乙個,偏移量加1 dw定義字型別變問量,乙個字資料佔2個位元組單元,讀完乙個,權偏移量加2 dd定義雙字型別變數版,乙個雙字資料佔4個位元組單元,讀完乙個,權偏移量加4 一開始用了乙個暫存器表示所有項,但是後來發現四個資料佔的位元...