freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

delphi串口通信編程-資料下載頁

2025-07-15 22:36本頁面
  

【正文】 0,9999 {兩個(gè)字 } DW ?A? {與 DB ?A?、 0相同 } DW ?BA? {與 DB ?A?、’ B?相同 } DD 0FFFFFFFFH {一個(gè)雙字 } DD 0,99999999 {兩個(gè)雙字 } DD ?A? {與 DB ?A?、 0、 0、 0相同 } DD ?DCBA? {與 DB ?A?、’ B?、’ C?、’ D?相同 } end。 變量聲明 Var ByteVar:Byte。 WordVar:Word。 IntVar:Integer。 asm MOV AL,ByteVar MOV BX,WordVar MOV ECX,IntVar end。 操作數(shù) ?內(nèi)嵌匯編器的操作數(shù)可以是常量、寄存器、符號(hào)和運(yùn)算符 ?保留字 Var ch:char asm MOV Ch,1 {將 1裝入 CH寄存器 } MOV amp。Ch,1 {將 1賦給 CH變量 } End。 ( 2)表達(dá)式 1) Object Pascal與匯編表達(dá)式的不同 2) 表達(dá)式元素 3) 表達(dá)式類別 4) 表達(dá)式類型 1) Object Pascal與匯編表達(dá)式的不同 Object Pascal與匯編表達(dá)式的最大區(qū)別在于所有匯編的表達(dá)式必須分解成單獨(dú)的可以在編譯時(shí)計(jì)算的常量 Const X=10。 Y=20。 Var Z:Integer。 asm MOV Z,X+Y end。 Var X, Y, Z:Integer。 asm MOV EAX,X ADD EAX,Y MOV Z, EAX end。 2)表達(dá)式元素 ?常量 ?寄存器 ?符號(hào) 常量 內(nèi)嵌匯編器支持兩種類型的常量: ?數(shù)值常量 :32位,一般用十進(jìn)制,也支持二進(jìn)制(數(shù)據(jù)后加 B),八進(jìn)制( O),十六進(jìn)制( H或前加 $) ?字符串常量 :字符串必須包括在單引號(hào)或雙引號(hào)之間 寄存器 寄存器 保留字 32位通用寄存器 EAX EBX ECX EDX 32位指針或變址寄存器 ESP EBP ESI EDI 16位通用寄存器 AX BX CX DX 16位指針或變址寄存器 SP BP SI DI 低 8位寄存器 AL BL CL DL 16位段寄存器 CS DS SS ES 高 8位寄存器 AH BH CH DH 協(xié)處理器寄存器堆棧 ST 符號(hào) Delphi的內(nèi)嵌匯編器支持在匯編代碼中存取幾乎所有的 Object Pascal標(biāo)識(shí)符,此外還支持特殊符號(hào) @Result,它對(duì)應(yīng)的是函數(shù)內(nèi)部的結(jié)果變量。 Function Sum(X,Y:integer):Integer。 Begin Result:=X+Y。 End。 Function Sum(X,Y:integer):Integer。stdcall。 Begin asm MOV EAX,X ADD EAX,Y MOV @Result,EAX end。 End。 下述的符號(hào)不能在匯編語句中使用: ?標(biāo)準(zhǔn)過程和函數(shù)(例如 WriteLn和 Chr) ?Mem,MemW,MemL,Port和 PortW等特殊數(shù)組 ?字符串變量,浮點(diǎn)數(shù)和集合常量 ?沒有在當(dāng)前塊聲明的標(biāo)簽 ?在函數(shù)外的 @Result符號(hào) 3)表達(dá)式類別 在內(nèi)嵌匯編程序中將表達(dá)式分為: 寄存器、內(nèi)存引用和立即數(shù) Const start=10。 Var count:integer。 Asm MOV EAX,start {MOV EAX,xxxx} MOV EAX,count {MOV EAX,[xxxx]} MOV ECX,[start] {MOV ECX,[xxxx]} MOV EDX,OFFSET count {MOV EDX,xxxx} End。 4)表達(dá)式類型 每個(gè)內(nèi)嵌匯編表達(dá)式都有一個(gè)類型,更確切的是都具有 長度,因?yàn)閰R編器僅僅是簡(jiǎn)單地將表達(dá)式類型視作內(nèi)存 位置的長度。 Var QuitFlag:Boolean。 //一個(gè)字節(jié) OutBuf:Word。 //一個(gè)字 Asm MOV AL, QuitFlag MOV BX, OutBuf MOV DL, OutBuf {出錯(cuò) } End。 類型轉(zhuǎn)換: MOV DL, BYTE PTR OutBuf MOV DL, BYTE (OutBuf) MOV DL, 嵌入式匯編的通信編程例子 1) 在 Delphi中對(duì)端口的直接操作 2) 行間匯編接收下位機(jī)傳來的數(shù)據(jù)的簡(jiǎn)單例子 3) 直接操作端口的 Delphi單元 1)在 Delphi中對(duì)端口的直接操作 ?預(yù)定義數(shù)組 ?采用直接嵌入式匯編語言 預(yù)定義數(shù)組 Delphi保留了 Turbo Pascal的兩個(gè)預(yù)定義數(shù)組 Port和 PortW。這兩個(gè)一維數(shù)組的每個(gè)元素代表一個(gè)數(shù)據(jù)端口,它們的端口址址同它們的下標(biāo)是相對(duì)應(yīng)的。 例: Port[$20]:=$20。 //將 $20寫入 $20端口 PortData:=Port[$20]。 //將 $20端口的數(shù)據(jù)讀入 byte變量PortData 直接嵌入式匯編語言 Var PortData:byte。 begin asm MOV AL,$20 //數(shù)據(jù) MOV DX, $20 //port地址 OUT DX,AL //將 $20寫入 $20端口 MOV DX, $20 IN AL,DX MOV PortData,AL。 //將 $20端口的數(shù)據(jù)讀入 byte變量 PortData end。 end。 3)直接操作端口的 Delphi單元 輸出: Out dx,al Out dx,ax 輸入: In al,dx In ax,dx // PortReadByte 函數(shù) //參數(shù): port address //返回:給 port的 byte值 function PortReadByte(Addr:Word):Byte。assembler。register。 asm mov dx,ax in al,dx end。 //高速讀端口函數(shù): PortReadWord 函數(shù) //參數(shù): port address //返回:給 port的 word值 //注釋:可能有些卡和計(jì)算機(jī)不能訪問全部的 word function PortReadWord(Addr:Word):Word。assembler。register。 asm mov dx,ax in ax,dx end。 //低速讀串口數(shù)據(jù) //參數(shù): port address //返回:給 port的 word值 //注釋:工作時(shí),要調(diào)整 delay function PortReadWordLS(Addr:Word):Word。assembler。register。 const Delay=150。 //依靠 CPU的速度和卡的速度 asm mov dx,ax in al,dx mov ecx,delay @1: loop @1 //在兩次讀之間延時(shí) xchg ah,al inc dx //port+1 in al,dx xchg ah,al end。 //PortWriteByte 函數(shù) procedure PortWriteByte(Addr:Word。Value:Byte):Word。assembler。register。 asm xchg ax,dx out dx,al end。 //高速寫端口過程 //注釋:工作時(shí),可能有些卡和計(jì)算機(jī)不能訪問全部的 word procedure PortWriteWord(Addr:Word。Value:Word):Word。assembler。register。 asm xchg ax,dx out dx,ax end。 //低速寫端口過程 procedure PortWriteWordLS(Addr:Word。Value:Word):Word。assembler。register。 const Delay=150 //依靠 CPU的速度和卡的速度 asm xchg ax,dx out dx,al mov ecx,delay @1: loop @1 xchg ah,al inc dx out dx,al end。 測(cè)試: 1. 如果使用 9600bps、偶校驗(yàn)位檢查、 8個(gè)位的數(shù)據(jù)、兩個(gè)位的停止位來傳輸數(shù)據(jù),那么傳輸一個(gè)含有 800字節(jié)的字符串需要多長的時(shí)間? 2. 說明串口通信的建立步驟。 3. 請(qǐng)解釋流量控制,并描述流量控制的實(shí)現(xiàn)方法。 4. 串口通信程序調(diào)試時(shí),接收端沒有任何東西,可能的出錯(cuò)原因有哪些? 請(qǐng)寫一段通過 COM1發(fā)送 90H數(shù)據(jù)的程序。 字符串“ 123木頭人!”中, Delphi判斷的字符總數(shù)是多少?字節(jié)數(shù)又是多少?如果將此字符串由 RS232傳送出去,則在線路上流動(dòng)的字節(jié)是多少? 請(qǐng)以匯編語言實(shí)現(xiàn)一段串口通信程序。 參數(shù)設(shè)置: COM2,波特率 1200,奇校 驗(yàn),停止位 1位,字長 8位 操作:收 10個(gè)字符
點(diǎn)擊復(fù)制文檔內(nèi)容
公司管理相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1