1樓:卿巨集扶以彤
movax,dataseg
是將標識為dataseg的資料區首位址傳給axmovds,ax
暫存器賦值。因為8068/8088規定段暫存器不能直接賦值,必須要由暫存器給他傳值,因此想初始化資料段首位址必須要由ax中轉一下。
dw32
dup(0)告訴編譯器記憶體中預留32個4位元組,並全部填充為0
2樓:匿名使用者
貌似想直接訪問2000位址是輸入 a 2000
忘記了。
求高手寫組合語言,以ds:2000h為首位址,有若干資料,迴圈相加,當結果為200時程式結束,將結果儲存到al中
3樓:id雞蛋炒韭菜
mov bx,2000h
mov al,0
s: add al,[bx]
inc bx
mov cx,200
sub cl,al
loop s
以上**假設相加後一定會有一時刻al中的值是200.
如果相加過程導致al始終不等於200,那麼以上**無法停止
4樓:
改進 」雞蛋炒韭菜「的**:
mov bx,2000h
mov al,0
dl,ffffh
s: tesp bx,bx
jz error
add al,[bx]
cmp al,200
loop s
jmp end
error:???
end:???
組合語言 程式執行後關於ds段暫存器的問題:
5樓:匿名使用者
程式載入後,ds中存放著程式所在記憶體區的段位址,而cs中的是**段的開頭段位址,預設便宜位址都是為0
0b2d:0000到0b3d:0000這段空間是256位元組,是psp區,是用來讓程式和dos進行通訊的
另外最好不要在code segment中定義資料,不然會吧資料當成**執行
可以另起乙個data segment來定義資料
6樓:千葉郎君
由於本人工作環境不是8086架構,故而對於本人以下言論樓主應該持有保留態度。
ds 和 cs都是段暫存器,分別是資料段暫存器和**段暫存器,兩者之間也沒有什麼必然的聯絡。
程式原始碼中也沒有試圖主動修改這兩個段暫存器(**段基址暫存器的改變要通過跳轉指令),故而結束後是系統初始化時的段基址值。
ds和cs所指定的記憶體區域也沒有必然的連續性。
謬誤之處還請指正。
彙編,某程式裝入記憶體後。ds=1200h,cs=1400h,則程式中資料段中的資料最多是?位元組
7樓:只為醍醐灌頂
ds到cs之間一共可以有14000h-12000h=2000h個位元組,但前256個位元組是psp通訊區,不能屬於資料段,所以資料段最多可以是2000h-256=7936個位元組
8樓:做而論道
14000h-12000h=2000h=8192位元組。
開源程式靠什麼掙錢,開源程式怎麼靠什麼盈利
單單對於開源程式來說,自然都開源了,要相信就不是為了營利!當某種技術發展到一定程度之後就會開源,大家集思廣益,得到更好的發展!服務,賣的不是程式,是服務。開源程式怎麼靠什麼盈利 可以賣軟體 是免費釋出,但 和二進位制程式都是可以 的 賣硬體 製作硬體,搭載開源軟體 賣參考書 使用說明,教材 賣服務 ...
android的源程式怎樣用eclipse開啟
首先開啟eclipse 工作區右鍵 選擇import 選擇android 雙擊安卓資料夾旗下的唯一乙個選項 選擇browse 找到你的android工程資源確定 用eclipse的import功能將其匯入,就可以開啟了 android studio寫的程式怎麼用eclipse開啟 android s...
如何用vs2015編寫c語言源程式
應該新建c 專案就行,c 包含c,給您的建議,還需要您自己實踐。如何使用vs2015編寫c語言 1.建立專案,檔案 新建 專案 2.專案型別為 win32控制台應用程式 自己定義專案名稱,確定3.按照win32應用嚮導完成設定,下一步 即可4.選擇應用型別為 控制台應用程式 附加選項為 空專案 然後...