A. 匯編語言題 數據段定義320位無符號數據x、y(40個位元組'而且x〉y)和400位無符號數z(50個字
ASSUMECS:ZXC,DS:QWE
QWESEGMENT
XXDB100,18,120,48,200,97,42,10,72,19
DB100,18,120,48,200,97,42,10,72,19
DB100,18,120,48,200,97,42,10,72,19
DB100,18,120,48,200,97,42,10,72,19
YYDB27,13,108,26,147,32,39,6,38,11
DB27,13,108,26,147,32,39,6,38,11
DB27,13,108,26,147,32,39,6,38,11
DB27,13,108,26,147,32,39,6,38,11
ZZDB50DUP(0)
QWEENDS
ZXCSEGMENT
BG:MOVAX,QWE
MOVDS,AX
MOVSI,0
MOVCX,40
LP:
MOVAL,XX[SI]
CALLPRINT
MOVDL,'-'
INT21H
MOVAL,YY[SI]
CALLPRINT
MOVDL,'='
INT21H
MOVAL,XX[SI]
SUBAL,YY[SI]
MOVYY[SI],AL
CALLPRINT
MOVDL,13
INT21H
MOVDL,10
INT21H
INCSI
LOOPLP
EXIT:
MOVAH,4CH
INT21H
PRINT:
MOVAH,0
MOVBL,100
DIVBL
MOVDH,AL
MOVAL,AH
MOVAH,0
MOVBL,10
DIVBL
MOVBX,AX
MOVAH,2
MOVDL,DH
CALLOUT_DL
MOVDL,BL
CALLOUT_DL
MOVDL,BH
OUT_DL:
ADDDL,'0'
INT21H
RET
ZXCENDS
ENDBG
B. 一個數字等於多少個位元組
一般情況下是數字佔一個位元組,英文佔一個位元組,標點佔一個位元組,一個漢字占兩個位元組。
一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,如一個ASCII碼就是一個位元組。
這得看這個數字是怎麼表示的了。如果是用字元串來表示的話,數字多少位就多少個位元組。要得到這個數字的真實值,就得經過換算。
如果是直接存儲的話,就要看這個數字是byte,word,還是long等等了。其實就算是一個word,也可以當成兩個byte來看的。
字元與位元組
ASCII碼:一個英文字母(不分大小寫)佔一個位元組的空間,一個中文漢字占兩個位元組的空間。一個二進制數字序列,在計算機中作為一個數字單元,一般為8位二進制數,換算為十進制。最小值0,最大值255。如一個ASCII碼就是一個位元組。
UTF-8編碼:一個英文字元等於一個位元組,一個中文(含繁體)等於三個位元組。中文標點佔三個位元組,英文標點佔一個位元組。
Unicode編碼:一個英文等於兩個位元組,一個中文(含繁體)等於兩個位元組。中文標點占兩個位元組,英文標點占兩個位元組。
C. 在C語言中,int類型,long類型,float類型,double類型和char類型在16位和32位計算機中各占幾個位元組
int 在內存中佔4個位元組,long在內存中佔4個位元組,float:佔4個位元組,double: 佔8個位元組,char:佔1個位元組,操作方法如下:
1、C#支持8中預定的整數類型。分別是sbyte、short、int、long、byte、ushort、uint、ulong。byte0-255標準的8位整數類型。默認是無符號的,有符號的為sbyte。
D. 題目:設表格中有1024個數據項,每個數據為2個位元組,表格總長度為2048個位元組,現要求根據R2R3的內容從表格中找
這個題的意思是R2R3中存放了從#TAB開始,第幾個數據項,它讓你根據R2R3中的值去把它取出來,再放回R2R3中。假如R2R3中存放的數是800,則你要找到第800個數據項的相對於#TAB的位置。因為一個數據項佔用兩個位元組,則這第800個數據項則是從#TAB開始第1600個位元組。所心R2R3分別要左移一位再與DPTR的高位和低位相加獲得絕對地址。
其實這個程序是不完善的,因為它未考慮R2R3分別左移有溢出的情況。
再者,我前者只是給你舉了一個很簡單的例子,其實倘若R2R3存放的是1,則DPTR就應當加0,而不是加2。嚴格來說,這個程序即使左移沒有溢出,也求不出正確的結果。應當先讓R3減1再左移。
不知道你對我的回答是否滿意。
E. 定義數據段如下,畫出數據存儲示意圖,並說明該數據段共有多少個位元組單元。
所謂內部數據存儲器就是集成在單片機內部的數據存儲器,因為單片機的內部的數據匯流排是8位的,所以其定址范圍只有00H~FFH。而這段內存也分為兩部分:00H~7FH:直接定址區: 也叫DATA區。C語言中在定義變數的時候,加上data這個關鍵字修飾的話,那麼這個變數就存在這個區域。這個區域可以進行直接定址。例如 MOV A, 30H;把30H單元裡面的內容復制到A中。 這段區域比較復雜,00H~1FH這段區域是通用寄存器(R0~R7)組所佔的區域。你可能覺得很奇怪,R0~R7隻有八個位元組,而這段區域有32個位元組。其實這個段區域是分為四組,每組8個位元組。而程序在同一時刻所用到的R0~R7隻是占這四組中的一組。其他的24個位元組是當作普通內存在使用的。而使用那一組是由PSW寄存器中的RS0和RS1兩位來決定的。 可能你會覺得設計這單片機的人不是找抽嗎,沒事搞的那麼復雜干什麼。其實設計者這樣設計是有目的的。在中斷的時候,這個設計就非常方便了。在進中斷的時候,要做現場的保護,就是把一些在主程序中用到的寄存器同時又在中斷中用到,這樣的寄存器就必須保護,防止數據丟失。例如在主程序中用到了R0~R7,在中斷中也用到了R0~R7,不這樣設計的話就得一個一個寄存器去入棧,然後再一個一個的出棧。麻煩的很。而有這樣的分組設計,只需在進中斷的時候,把PSW入棧,再改變PSW的RS0和RS1兩位的值,用不同的寄存器組。然後在中斷結束的時候,把PSW出棧就可以了。這樣就方便很多。 20H~2FH,叫位定址區,這個區域的16個位元組可以進行位定址。C語言中定義的位變數就分配在這個區域。 30H~7FH:普通 的內存。80H~FFH:這段地址也糾結。如果單片機是51的話還好理解,因為51單片機內存只有128個位元組,而這段地址是特殊功能寄存器的地址。如果是52單片機的話就糾結啦,52單片機內部數據存儲器有256個位元組,00H~7FH只有128個啊,而80H~FFH是特殊功能器的地址啊,那麼還有128個位元組的地址怎麼編排呢?和特殊功能器共用地址?那會不會在訪問內存的時候改變了特殊功能器的值啊,改變了的話程序會出問題的?這是每個初學者都有這樣的疑問。其實特殊功能寄存器的確和後面128個位元組的內存是共用相同的地址的。但是他們都有自己的物理地址,就像兩個人同名樣的,雖然名字相同,但不是同一個人。而區分的方法就是利用不同的定址方式,特殊功能寄存器有直接定址,內存用間接定址。例如:MOV R0, 0E0H;直接定址,把累加器A中的值復制到R0中。MOV R1,#0E0HMOV R0,@R1間接定址,把地址為E0H的內存單元裡面數復制到R0中。間接定址只能用R0或R1作為地址指針。 外部數據存儲器,也就是外部擴展的寄存器。以前的外部存儲器都是掛在單片機外面的(現在的外部存儲器都集成在單片機內部了,但是訪問的方式還是沒改變。只是不佔用IO口了),用單片機的P0口和P2口來連接外部存儲器。P0口作為訪問外部存儲器地址的低八位和數據口,P2口作為地址的高八位。程序訪問外部數據存儲器,必須用DPTR或者R0和R1做為地址指針,用MOVX指令。在外部存儲器的地址小於100H的時候,可以用R0和R1作為地址指針來訪問外部存儲器。例如:MOV R0,#30HMOVX A,@R0這段程序就是把地址為30H 的外部存儲器的數據復制到A中。 所以外部存儲器的00H~FFH也叫pdata區。同樣在C語言中,用pdata關鍵字修飾的變數存在該區域。外部存儲器所有的區域都可以用DPTR作為指針來訪問。例如:;地址小於8位MOV DPTR,#0030HMOVX A,@DPTR;地址大於8位MOV DPTR,#3000HMOVX A,@DPTR所以外部存儲器所有區域叫xdata區,在C語言中,有xdata修飾的變數就存在該區域。內部數存和外部數存有些地址是重疊的,但是它們在空間上不重疊。也就是有自己獨立的物理空間。利用不同的定址方式從而來區分他們。程序存儲器也就是只讀存儲器。在程序運行過程中只能對它進行讀,但是不能寫。對它的寫只能利用一些特殊的方式,例如把你在電腦裡面寫好程序,通過下載器下載到單片機裡面。而在程序中對它的讀也得用DPTR做為指針來訪問,並且用MOVC指令。由於老的51單片機內部集成的程序存儲器空間比較小,所以有時候需要外擴程序存儲器。但是內部程序存儲器和外部程序存儲器不能共存,只能用其中的一個。有單片機的EA管教來決定,EA為高時,內部。EA為低時,外部。
F. Foxpro的資料庫的欄位名最多由多少個字元組成每個欄位可定義的最大長度是
每個表欄位的最多字元數是指欄位名稱的字元長度,以字母或漢字開頭,後跟字母或數字或漢字或下劃線.在VFP中為10字元(單位元組),漢字為5字元(雙位元組).
而欄位值則不在此限,其中字元型欄位記錄字元長度為1-254 characters.
每個記錄中字元的最大數目 65,000字元(單位元組).
下附MSDN的說明:
Visual FoxPro 系統容量
有些容量可能受可用內存的限制。
分類 功能 數目
表文件及索引文件
每個表文件中記錄的最大數目 10 億
表文件大小的最大值 2G 位元組
每個記錄中字元的最大數目 65,500
每個記錄中欄位的最大數目(1) 255
一次同時打開的表的最大數目(2) 255
每個表欄位中字元數的最大值 254
非壓縮索引中每個索引關鍵字的最大位元組數(3) 100
壓縮索引中每個關鍵字的最大位元組數(3) 240
每個表打開的索引文件數(2) 沒有限制
所有工作區中可以打開的索引文件數的最大值(2) 沒有限制
關系數的最大值 沒有限制
關系表達式的最大長度 沒有限制
欄位的特徵
字元欄位大小的最大值 254
數值型(以及浮點型)欄位大小的最大值 20
自由表中各欄位名的字元數的最大值 10
資料庫包含的表中各欄位名的字元數最大值 128
整數的最小值 - 2,147,483,647
整數的最大值 2,147,483,647
數值計算中精確值的位數 16
僅供參考.
補充:
FOXPRO FOR WINDOWS的DBF表與VFP的DBF表系統容量大部分相似。僅每條記錄的字元數不超過4000。
每條記錄最多128個欄位。
欄位寬度
字元型 寬度為1-254字元
邏輯型 寬度為1字元
日期型 寬度為8字元
數值型 寬度為1-19位,如果是小數,小數點佔1位
備注型 寬度為10字元,存放1指針
數據表名請遵循DOS下短文件名規則,8字長(單位元組),4字長(雙位元組)。
G. 數據類型int在內存中佔多少個位元組
1、int類型即整型,在不同的編程語言、不同編譯器佔用的內存空間是不一樣的。
2、比如vb6的整型是2兩位元組,而vc6的整型是4位元組。
3、即使都是c,也可能不同,早期16位機的編譯器里int都是兩位元組,現在的32位機的編譯器里大多是4位元組。
H. 已知數據定義,畫出語句分配的存儲空間並指出BUFF1、BUFF2、BUFF3分別佔多少個位元組
畫就免了吧
BUFF1 DW ?,0104H ;這佔4個位元組,"?"兩個;"0104H"兩個
BUFF2 DB 10H DUP(1,2);這佔32個位元組.共16組,每組2個位元組
BUFF3 DD ?;這是雙字,所以佔4個位元組.
I. c語言整型數據int占幾個位元組
根據編譯器了,不同的編譯器,規定是不一樣。ANSI標準定義int是佔2個位元組,TC是按ANSI標準的,它的int是佔2個位元組的。但是在VC里,一個int是佔4個位元組的。