1樓:
;且看:
ascii proc near
mov si, 4
mov cx, 10
r2: mov dx, 0
div cx
add dl, 30h
dec si;這樣的話,有兩個辦法,1.si作為乙個返回值,你需要在返回後及時處理,或在內部處理,如在ret前加add bx,si,以便得到正確的字串首位址,2.將[bx]-[bx+si-1]之間的單元置為30h/20h,即高位填零/空格。
這兩種方法得到不同的字串,但都可以保證邏輯正確。另外,你的快取區是否小了些?
mov [bx][si], dl
cmp ax,10
ja r2;主要問題,小於10就不要了,這個可是最高位,應該是大於0retascii endp
********************====補充********************====
懶惰是魔鬼
懶惰要不得
學程式設計要不得
彙編更要不得
我們要鑑定貫徹最高指示:自己動手...
彙編很簡單的問題
2樓:
我靠..
咋這麼像我們學校的實驗呢 ?
呵呵 中間的**...
mysub1 proc near
(push ds) 這個和後面的pop可以不要,不要是一樣的正確。
mov dh,[si]
mov dl,[si]
dec cx
inc si
a1: cmp dh,[si]
jb a2
cmp dl,[si]
jnb a3
(inc si
loop a1
jmp a4) 這個括號的也可以不要,但是嚴謹點就寫起嘛!
a2: mov dh,[si]
inc si
loop a1
jmp a4
a3: mov dl,[si]
inc si
loop a1
jmp a4
a4: (pop ds)
retok 完了。這個應該對的了。我在實驗室執行了的. 呵呵兄弟..記得給我分哦!! 呵呵
很簡單的乙個彙編小問題……
3樓:匿名使用者
你的程式可以這麼來寫:
data segment
msg db 'hellow world!$'
data ends
stack segment para stack 'stack'
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stackstart:
mov ax,data
mov ds,ax
mov dx,offset msg
mov ah,9
int 21h
mov ah,4ch
int 21h
code ends
end start
首先說明下:
assume cs:code,ds:code 是不對的應該是assume cs:code,ds:data就你的問題mov ax,cs 是可以不用的,但是mov ax,data
mov ds,ax
這兩句是必須的,因為
assume cs:code,ds:data是一句相當於說明性的文字即:cs指向**段,ds指向資料段但是並沒有實際指向
而mov ax,data
mov ds,ax這兩句就是是ds實際的指向資料段,當然cs你不用管預設就行
基本上就這樣就行了,你可以將
data segment
msg db 'hellow world!$'
data ends
stack segment para stack 'stack'
db 100 dup(?)
stack ends
code segment
assume cs:code,ds:data,ss:stackstart:
mov ax,data
mov ds,ax
這幾句理解為程式的初始化,亦即格式要求
這樣程式就不會錯了。
希望對你有用。
簡單的彙編問題
4樓:匿名使用者
19行:「mov ax,data ;程式從start開始」問題在於放入ax暫存器的不應是乙個段,而應該是段的位址,所以在「date」前一改加上「offset」操作符才對,應改為:「mov ax, offset data」
還有30行:「end start」這是個錯誤的語法,應去掉「 start」
所以整個程式改為:
title ***hello,world***
;定義資料段
data segment
msg db 'hello,world!','$'
data ends
dispstr macro
mov ah,09h ;9號功能呼叫:顯示字串
int 21h ;完成輸出顯示
endm
;定義**段
code segment
assume cs:code ;規定cs的內容
assume ds:data ;規定ds的內容
start:
mov ax, offset data ;程式從start開始
mov ds,ax ;ds置初值,data的段位址
lea dx,msg ;得到字串"hello world!"的偏移位址
dispstr
dispstr
dispstr
exit: mov ah,4ch ;4c號功能呼叫:終止當前程式並返**用程式
int 21h ;返回dos
code ends ;**段結尾
end ;結束彙編
這樣至少沒有編譯錯誤了!但是連線好像還是有錯!你自己改了!
乙個超簡單的彙編問題,是人就能答出來
5樓:圓球球
在彙編中等價的語句很少,只能說他們檢查的東西是否一樣或者實現的功能是否相同。
je和jmp是不等價的。
jmp是不判斷,強行跳轉。
je是判斷零標誌(zf)是否被置為。
如果說等價的東西,jz和je都是檢查零標誌的。
6樓:艾任
既然是人就能答出來,那你怎麼還問別人呢
乙個簡單的彙編問題
7樓:沙支誇依
從題目可以看出你問的應該是8086,下的彙編問題。
首先講講背景知識吧。早期pc位址匯流排只有20根,也就是說,系統可以定址2的20次方,即1m byte.可是我們的8086的暫存器沒有20位的,只有16位,比如cs、ds、es、ss段基址暫存器,ax,bx這些通用暫存器,都是16位的。
所以,要定址1m byte的空間。只能使用這種「段+偏移」的二維方式表示。
舉例來說,0000:0401 (以下表示位址的數字均為16進製制)這個位址,按前述的計算方式,實際對應的物理單元位址是 段位址0 * 16 +偏移位址0401,即 00401 處的物理單元;同乙個物理單元也可由 0040:0001 這對段/偏移量來表示(計算方法相同),或者由 003f:
0011 表示(003f0+0011)= 0401。
---------------------------------------------
ok,說到這裡,背景你應該已經看的差不多了。我們就來討論你問的這個問題吧.20000h這個位址單元,sa(段基址) 最大值很好確定,只要偏移最小,sa自然是最大的嘍。
所以maxsa=20000h/10h = 2000h
那minsa呢?
當然是偏移最大的時候,sa自然最小了。可是什麼時候才是偏移最大呢?
ffffh?當然不行。因為我們目標位址單元最後四位是0h,所以偏移的最低四位也必須是0.
即最大偏移是fff0h嘍。那剩下的,應該好算了吧。套用公式, minsa*10h+fff0h=20000h <==> minsa = 1001h
-----------------------------
嘍索了半天,最後得到的極限值就是:
1001:fff0 = 20000h
2000:0000 = 20000h
8樓:匿名使用者
一樓分析的很細,達到大學老師的水平了
9樓:匿名使用者
我也在為此題糾結,學習了。。
組合語言學習問題,很簡單
10樓:箭zai弦
乙個段最大為64k 也就是0ffffh 所以段位址最小為10001h(這是王爽書上的一題吧,這是我的看法,不過不知道為什麼網上有人說是0
11樓:文刀舍予
由:段位址*10h+偏移位址=實際位址
得:段位址=(實際位址-偏移位址)/10h設:段位址為y,偏移位址為x,由題意得:
y=(20000h-x)/10h (x∈)該函式為單調遞減函式,證明過程略
所以:當x=0時,y取得最大值,為20000h/10h=2000h當x=ffffh時,y取得最小值,為(20000h-ffffh)/10h=1000.1h
根據題意,應該向上取整,結果為1001
12樓:我無語呀
記憶體位址=段位址*16+偏移位址,記憶體形式為****:****,而偏移位址最大為ffff所以當為1001:fff0的時候為20000h,這個時候應該是最小吧.
關於地球公轉的問題很簡單很簡單啊
我狂暈!這麼簡單的題目這麼多人做錯啊!正確答案是b啊,近日點的日期是一月初.一月初明白是什麼意思不?各位大哥啊!a就錯了,自然c也錯了,12.22是冬至,北半球太陽高度角達一年的最小值,過了12.22那天,太陽直射點就開始向北移動!廣州的的緯度比北京低,冬天的時候白晝比北京長!樓主我的答案你滿意!項...
簡單的彙編問題,乙個簡單的彙編問題
19行 mov ax,data 程式從start開始 問題在於放入ax暫存器的不應是乙個段,而應該是段的位址,所以在 date 前一改加上 offset 操作符才對,應改為 mov ax,offset data 還有30行 end start 這是個錯誤的語法,應去掉 start 所以整個程式改為 ...
很簡單的相對論問題, 懸賞 很簡單的相對論問題。。。
lz之所以得到兩個答案,是因為lz沒弄清楚這裡的30s是針對誰而言的。為了方便說明問題,不妨令 飛船上的時鐘走了30個格仔 這個事件為p事件 對於p事件發生所經歷的時間,顯然不同參考係的觀測者測得的結論不一樣。就p事件而言,由於p事件中的鐘是飛船上的,故而飛船參考係測得p事件發生經歷了30s,地面觀...
數學問題,很簡單的,乙個數學問題,很簡單的
上式可化為 左右同 2 x 14x 5 6 0 x 7 2 7x 7 5 6 0 x 7 49 5 6 0 完全平方公式 x 7 根號 299 6 x1 根號 299 6 7 x2 根號 299 6 7 解 因為 1 2 x平方 7x 5 12 0所以在兩邊同乘以 12得 6x平方 84x 5 0 ...
英文語法的問題很簡單
如果你想說你喜歡做什麼,用什麼,只能用兩種句式。1 i like to use 2 i like using 要不你就直接說 i like pens 如果你說 i like use the pen 人家肯定懂你是什麼意思,但是語法上就不對,跟你關係好的可能會告訴你,要不然麼。那裡的老師批作文時一般會...