線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1615
推到 Plurk!
推到 Facebook!

關於x86 assemby 的問題...

尚未結案
badcmos
一般會員


發表:1
回覆:2
積分:0
註冊:2004-10-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-01 15:46:17 IP:222.156.xxx.xxx 未訂閱
Please write a program (C or assembly) to get CMOS data ( form CMOS data offset 0 to CMOS data offset 127).The CMOS INDEX port is 70h,and the DATA port is 71h.For example, mov AL, 0 out 70h, AL in AL, 71h Then you get the offset 0 data in CMOS data area. Note: 1. In assembly code, because the value of AL is ASCII code,you must transfer it to a visiable HEX. 2. Please list the result as following example: 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ----------------------------------------------- 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 05 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 3.Because some values are variable, please updata the data per 1 or 2 seconds in the screen. 以上是題目…下面是我的做法.但我一直找不出來我哪裡做錯了>< .model small .stack 64 code segment assume cs:code,ds:code org 100h mov bl,0 start: mov al,bl out 70H,al ;從al暫存器的位元組資料輸出至70h位址 in al,71H ;從71h埠位址讀取位元組資料至al暫存器 next: mov cl,4 ;將 4 存於 CL mov dl,al ;將 AL 之內容存於 DL 中以方便印出 shr dl,cl ;把 DL 較高之 4 位元變成 DL 中較低之 4 位元 call print ;呼叫副程式 mov dl,al ;將 AL 之值存入 DL and dl,0fh ;取得 DL 之較低的 4 個位元 call print ;呼叫副程式 call cr_lf ;印出歸位及換行字元 mov ah,2 ;此行及以下兩行印出空白 mov dl,' ' int 21h ;--------------------------------------- ADD bl, 1 CMP bl, 128 JNE start mov ax,4c00h int 21h ;--------------------------------------- print proc near add dl,30h ;加上 30H cmp dl,39h ;比較看看是否超過 39H jbe ok ;沒超過直接印出 add dl,7 ;若超過再加上 7 ok: mov ah,2 int 21h ;印出 ret print endp ;--------------------------------------- cr_lf proc near mov ah,2 mov dl,00h ;歸位字元 call ok mov dl,00h ;換行字元 call ok ret cr_lf endp code ends end start 發表人 - badcmos 於 2004/10/01 15:59:34
badcmos
一般會員


發表:1
回覆:2
積分:0
註冊:2004-10-01

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-01 16:01:22 IP:222.156.xxx.xxx 未訂閱
正確執行結果: 這個程式的答案不會是00,01,02,03,...這種有順序的值,甚至有些值是隨著時間而改變的 CMOS offset 00h 的值代表"秒",如果你的程式正確的話,每次都會讀到不同的時間秒數,和系統的時間"秒"一樣才對 CMOS offset 02h 的值代表"分",如果你的程式正確的話,讀到的值應該和系統的時間"分"一樣才對 我的問題: 我執行後這個程式00h與02h是有變動,但是沒有跟系統時間一致 這也是我困擾的地方 >< 00h的執行結果是固定的跳躍00 11 22 33 ... 而02h也是如此~但是跳躍的時間久久一次 文有點長,請各位多多包涵 多謝~多謝
H君
一般會員


發表:0
回覆:1
積分:0
註冊:2004-12-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-12-30 18:53:49 IP:220.229.xxx.xxx 未訂閱
COMS 的資料有些已經有變改, 之前我 Assembly 寫的 Game 也是用 COMS 時間當亂數; 現在執行都有問題.
badcmos
一般會員


發表:1
回覆:2
積分:0
註冊:2004-10-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-03 13:23:34 IP:61.66.xxx.xxx 未訂閱
H君: 謝謝妳的回覆....
系統時間:2024-04-29 13:14:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!