【正文】
,hourset: std_logic。signal qcsec,qcmin,qchour: std_logic。u2:sec_mincounter port map(clk,secset,secin,sec,qcsec)。u4:hourcounter port map(qcmin,hourset,hourin,hour,qchour)。計數(shù)脈沖set:in std_logic。調(diào)整時間q: out std_logic_vector(7 downto 0)。end hourcounter。begin process(clk,set)begin if set=39。then temp2temp1port(clk: in std_logic。調(diào)整信號month_in: in std_logic_vector(7 downto 0)。月輸出qc: out std_logic進位)。architecture arch of monthcounter is signal temp1,temp2:std_logic_vector(3 downto 0)。139。調(diào)整信號d:in std_logic_vector(7 downto 0)。分和秒輸出qc:out std_logic進位)。architecture arch of sec_mincounter is signal temp1,temp2:std_logic_vector(3 downto 0)。139。復(fù)位start_stop: in std_logic。百分秒輸出,當超過60分轉(zhuǎn)為秒sec: out std_logic_vector(7 downto 0)。end stopwatch。en: in std_logic。q: out std_logic_vector(7 downto 0)。end ponent。clr: in std_logic。qc: out std_logic)。signal qc1,qc2,qc3,qc4,flag:std_logic。begin u1:counter99 port map(clk,start_stop,reset,tcentsec,qc1)。u3:counter60 port map(qc2,reset,tmin,qc3)。process(qc3)begin if rising_edge(qc3)then flagport(clk: in std_logic。外部星期調(diào)整脈沖q: out std_logic_vector(3 downto 0)星期輸出)。architecture arch of weekcounter is signal temp:std_logic_vector(3 downto 0)。begin cptempport(clk: in std_logic。調(diào)整信號setlap: in std_logic_vector(1 downto 0)。調(diào)整輸入day: out std_logic_vector(7 downto 0)。月輸出year: out std_logic_vector(7 downto 0)年輸出)。architecture arch of y_m_d_count is ponent daycounterport(clk: in std_logic。day_in: in std_logic_vector(7 downto 0)。qc: out std_logic。day29: in std_logic。day31: in std_logic)。ponent monthcounterport(clk: in std_logic。month_in: in std_logic_vector(7 downto 0)。qc: out std_logic)。ponent yearcounterport(clk: in std_logic。year_in: in std_logic_vector(7 downto 0)。end ponent。setlap: in std_logic_vector(1 downto 0)。set1:out std_logic。set3:out std_logic。q2: out std_logic_vector(7 downto 0)。end ponent。year2: in std_logic。day28: out std_logic。day30: out std_logic。end ponent。signal qcday,qcmonth: std_logic。signal smonth,syear:std_logic_vector(7 downto 0)。begin u1:dmux port map(set,setlap,data_in,dayset,monthset,yearset,dayin,monthin,yearin)。u3:monthcounter port map(qcday,monthset,monthin,smonth,qcmonth)。u8:days_control port map(smonth,syear(4),syear(1 downto 0),day28,day29,day30,day31)。library ieee。use 。entity yearcounter isport(clk: in std_logic。調(diào)整信號year_in: in std_logic_vector(7 downto 0)。end yearcounter。begin process(clk,set,year_in)begin if set=39。 then temp2temp1第三篇:C語言課程設(shè)計數(shù)字鐘程序C語言數(shù)字鐘程序include“” void clock(int t)。for(t=0。void main(){ int t,i,j,n。t第五篇:如何編寫和語言程序解讀如何編寫和匯編語言程序可以用普通文本編輯器編輯匯編語言源程序。用戶通過屏幕編輯程序鍵入源程序,檢查無誤,可將源程序存到匯編系統(tǒng)盤上,該程序的擴展名為軟件運行基本環(huán)境運行匯編程序必備的軟件環(huán)境: DOS 操作系統(tǒng);匯編系統(tǒng)。由于每個段的物理空間為≤ 64KB,所以程序中各段可以分別為一個或幾個。 對于堆棧段也可以根據(jù)需要可有可無,但在連接(LINK)時計算機將顯示警告性的錯誤: Warning : N STACK segment There was 1 error ,該錯誤提示不影響程序的運行,如果程序中用到堆棧時必須設(shè)置堆棧段。)段寄存器的段地址的裝入Assume 偽指令語句只是建立了當前段與段寄存器的聯(lián)系,但不能把各段的段地址裝入相應(yīng)的段寄存器中,段寄存器的段地址的裝入是在程序中完成的。MOV AX,邏輯段名 MOV 段寄存器,AX 其中邏輯段名為程序中定義各邏輯段的名字,(不包括代碼段),段寄存器是指與各邏輯段相對應(yīng)的各段寄存器(DS、ES、SS)。對 CS 和 IP 的裝入有如下幾種情況:①根據(jù)用戶程序中的偽指令 END 后的標號為 CS 和 IP 提供代碼段的段地址和目標代碼的偏移地址。)程序中的數(shù)據(jù)與變量在匯編源程序中的數(shù)據(jù)除了立即數(shù),由指令產(chǎn)生的數(shù)和通過鍵盤輸入的數(shù)以外,還胡大量的數(shù)據(jù)是通過偽指令語句進行預(yù)置和分配的,也就是在某邏輯段中(除代碼段),將所需的數(shù)據(jù)以某種形式存放起來,在程序中可任意調(diào)用??梢詾槟硞€變量分配存儲空間以便在程序執(zhí)行過程中存放中間結(jié)果和最終結(jié)果,使用起來極為方便。EQU 和=可以出現(xiàn)在程序的邏輯段內(nèi)也可出現(xiàn)在邏輯段外。②用立即數(shù)的形式提供數(shù)據(jù)當原始數(shù)據(jù)只有幾個時,一般用立即數(shù)的方法來提供。③用編程的方法提供數(shù)據(jù)假如原始數(shù)據(jù)是一組有規(guī)律的數(shù)據(jù)項,則用編程序的方法形成這一組數(shù)據(jù),不用專門為這組數(shù)據(jù)分配存儲單元,節(jié)省了存儲空間。(3)數(shù)據(jù)的輸出方式 ①在顯示器上顯示一個字符調(diào)用 02H 號功能調(diào)用號,發(fā) 21H 號中斷,將要顯示的字符的 ASCII 碼送入 DL,就可在顯示器上顯示該字符。4)返回 DOS 狀態(tài)的方法 文件時,是在 DOS 狀態(tài)下進行的, 文件后正常返回 DOS 狀態(tài),一般用如下兩種方法:采用 DOS 4CH 功能調(diào)用和采用返回(RET)斷點的方法。宏匯編程序?qū)R編語言源程序的匯編過程包括語法檢查和數(shù)據(jù)代碼匯編兩部分,生成目標程序和輔助信息文件。源程序用宏匯編程序翻譯(匯編)后,可以得到三個文件: 的目標文件,在該文件中,將源程序的操作碼部分變?yōu)闄C器碼,但地址操作數(shù)是可浮動的相對地址,而不是實際地址,因此需經(jīng) LINK 連接文件進行連接才能形成可執(zhí)行文件。第三個文件是交叉索引文件,它是一個對源程序所用的各種符號進行前后對照的文件。)匯編操作過程在 DOS 狀態(tài)下,鍵入 MASM ↓則調(diào)入宏匯編程序,屏幕顯示與操作如下: masm ↓ Microsoft(R)Macro Assemble Version Copyright(C)Microsoft Corp 19811985,1987,All right filename [.ASM ]: MYFILE ↓ Object filename [ ]: MYFILE ↓ Source listing [ ]: MYFILE ↓ Crossreference []: MYFILE ↓ 50678 + 410090 Bytes symbol space free 0 Warning Errors 0 Severe Errors 其中劃線部分為用戶鍵入部分,MYFILE 為源程序名(),方括號中是機器規(guī)定的默認文件名,如果用戶認為方括號內(nèi)的文件名就是要鍵入的文件名,則可只在劃線部分鍵入回車符。當回答完上述四個詢問后,匯編程序就對源程序進行匯編。之后可重新進入屏幕編輯狀態(tài),調(diào)入源程序()進行修改,修改完畢,再進行匯編,直到匯編通過為止。 文件, 文件,則在分號前面加兩個逗號即可。)列表文件(.LST)列表文件(.LST)是通過匯編程序(MASM)產(chǎn)生的,可以在 DOS 狀態(tài)下用 TYPE 命令顯示或打印該文件,以便分析調(diào)試源程序。列表程序的第一列給出每條指令所在行號;第二列給出從段的首地址開始的每條指令存放的偏移地址;接著是數(shù)字列,給出對應(yīng)每條語句的機器碼和對應(yīng)于存放在棧段和數(shù)據(jù)段的值,在機器碼加上“ R ”的指令表示:這條指令在連接時可能產(chǎn)生與列出來的偏移地址不同的地址,因為這些偏移地址可能與其它模塊有關(guān);最右邊就是用匯編語言編寫的源程序。該列表清單 中是以 PARA 為 CODE 段、DATA 段和 STACK 段的起始邊界地址。NONE :表示本段與其它段不發(fā)生邏輯關(guān)系,即每段都有自己的基本地址。STACK :表明連接程序首先要把本段與同名同類別的其它段相鄰地連接在一起,然后為所有定義為棧段的連接在一起的段,定義一個共同的段基地址,即連接成一個物理段。(3)符號匯總表在列表程序中最后部分列出了符號匯總,是指在源程序中用戶定義的符號名、類型、值和所在段。另外由于列表文件給出了各條指令的偏移地址,對和程序時設(shè)置斷點很方便。如果要查看這個符號表,必須使用 的文件, 的文件,而后再用 DOS 的 TYPE 命令顯示,就可以看到這個符號使用情況表。連接程序 LINK 是把一個或多個獨立的目標程序模塊裝配成一個可重定位的可執(zhí)行文件, 文件。1)連接程序執(zhí)行過程在 DOS 狀態(tài)下,鍵入 LINK ↓(或 LINK MYFILE ↓)則系統(tǒng)調(diào)入 LINK 程序,屏幕顯示操作如下: D LINK ↓IBM Personal Computer Linker Version (C)Copyright IBM Corp 1981,1982,1983 Object Modules [.OBJ] : MYFILE ↓ Run File [] : MYFILE ↓ List File [] : MYFILE ↓ Libraries [.LIB] : ↓其中劃線部分為用戶鍵入部分,MYFILE 為源程序名,方括號內(nèi)為機器默認文件名,當用戶認為方括號中的文件名就是要鍵入的文件名時,可在冒號后面只鍵入回車。最后一個詢問是問是否在連接時用到庫文件,對于連接匯編語言源程序的目標文件,通常是不需要的,因此直接鍵入回車鍵。例如:D LINK MYFILE ;↓IBM Personal Computer Linker Version (C)Copyright IBM Corp 1981,1982,1983 連接后只產(chǎn)生 文件。D LINK MYFILE,;↓ IBM Personal Computer Linker Version (C)Copyright IBM Corp 1981,1982,1983 2)內(nèi)存映象文件(.MAP)由連接程序 LINK 文件,它實際上是連接程序的列表文件,它給出了每個段的地址分配情況及長度。例如: D TYPE ↓ Start Stop Length Name Class 00000H 0000FH 0010H DATA 00010H 0004FH 0040H STACK 00050H 0005FH 0010H CODE Origin Group Program entry point at 0005:0000 從中可以看到,源程序 MYFILE 中定義了三個段:數(shù)據(jù)段(DATA)起始地址為 00000H,終止地址為 0000FH,長度為 0010H 個字節(jié);堆棧段(STACK)起始地址為 00010H,終止地址為 0004FH,長度為 0040H 個字節(jié);代碼段(CODE)起始地址為 00050H,終止地址為 0005FH,長度為 0010H 個字節(jié)。執(zhí)行操作如下: D MYFILE ↓ 或 D ↓在源程序 MYFILE 中如果有顯示結(jié)果的指令,