1樓:匿名使用者
不對呀,如果是51的話,mov指令佔一位、兩位、三位的都有,add指令也有佔一位和兩位。
如:mov a,r0 佔一位
mov a,#20h 佔兩位
mov 30h,40h 佔三位
add a,r1 佔一位
add a,#23h 佔兩位
2樓:匿名使用者
這些都是規定死的東西。屁股太大了乙個座位做不下去的。
3樓:匿名使用者
這個都是intel定死的。沒有為什麼。
4樓:燕陣希冬蓮
abcdb
100dup(?)mov
cx,100lea
bx,abc第三句
可以寫成
movbx,
abc嗎?為什麼?還有就是加中括號
和不加中括號有什麼區別?老是搞不清!小弟剛剛開始學習組合語言!請前輩解答!謝謝!!
急~~~求助組合語言中mov指令和add指令用法
5樓:匿名使用者
1、linux和windows的**編寫是不一樣的,linux上的彙編風格是at&t風格,而windows上的彙編風格是intel風格。 其中的乙個區別是intel 風格是關於源運算元和目的運算元的。以第乙個為例
//windows上的寫法
mov eax, data4
//linux上的寫法
movl data4, eax
所以,你使用的哪個平台你得鬧明白。
2、如果是彙編**,直接用識別符號就好,還是不同的風格問題,如果按你寫的立即數模式。
//windows上的寫法
mov eax, -1000
//linux上的寫法
movl $-1000, eax
在linux的at&t彙編風格中,它這個立即數是必須要加上$ 表示乙個常量。 這個也是為什麼你在c語言中一般不能使用$來做為識別符號的乙個原因哦。
建議:查一下intel風格和at&t風格的彙編區別點。問題都很簡單,為了更好的幫助你,我上傳了乙份,詳細介紹intel組合語言程式設計的電子書,中文版的,希望能幫到你!
組合語言中add加法指令的問題
6樓:閭丘芷荷乙曾
1.0ac72h只是乙個表示方法,跟ac72h是一樣的含義。ax裡還是儲存16位的值。
之所以在前面多加乙個0,是因為編譯器不識別以字母開頭的立即數。
算是立即數表示的一種規則吧,或者可以理解為是一種語法規則。
只要是十六進位製數的(最後加h),首位又是字母的,必須前面新增個0。
這樣也不容易引起歧義。
如果不習慣加0,那mov
al,dh這個指令怎麼識別呢?
是把8位暫存器dh裡的值交給al?還是把十六進位製數0dh交給al呢。。。
所以建議你養成這樣的習慣。
2.0f表示溢位,實際上是把add指令作為有符號數加法指令。ax開始是正數(最高位0),bx也正數,相加結果超過了能識別的最大正數(7fffh),所以溢位了。
7樓:革盼秋宇恬
89h+
89h=
112h,而al最大是ffh,產生溢位後就生產丟失現象,只保留低位。
要想不丟失,可改為:
xorah,ah
addax,al
則ax是正確的112h
其他高階語言也一樣,在宣告變數和計算時要考慮數字溢位問題(宣告的是short型變數,給的卻是int型值,得到的也只會是short型的值即丟失或報錯)
8樓:做而論道
無論,是有符號還是無符號的,演算法都是相同的。
即:89h + 89h = (1)12h。
相當於無符號:137 + 137 = 274 = 256 + 18。 256 即為進製 1。
相當於有符號:(-119) + (-119) = +18。 溢位,結果無效。
換乙個數,再試試,有符號數,也可以得出正確的結果。
9樓:匿名使用者
不是的,雖然算數運算指令主要用來對8位無符號資料進行算術操作,但也同樣用於帶符號數的。
在加法運算中,若位7有進製,則進製位cy置1,否則清0;若位3有進製,則半進製位ac置1,否則清0。若看作2個帶符號數相加,還需判斷溢位位ov;若ov為1,表示和數溢位。
例如:a=aeh,r1=81h,執行指令「add a,r1」,則操作如下所示。
1 0 1 0 1 1 1 0
+ )1 0 0 0 0 0 0 1
——————————
1 0 0 1 0 1 1 1 1
結果:a=2fh,cy=1,ov=1,ac=0,p=1。
此例中,若把aeh、81h看作無符號數相加,則結果為12fh(在看作無符號數時,不考慮ov位);若將上述2值看作有符號數,則有「2個負數相加得到正數」的錯誤結論,此時,ov=1,表示有溢位,指出了這一錯誤。
希望能幫到你。
10樓:匿名使用者
無符號數的範圍是0-255,有符號數是-128 - 127.應該預設是無符號數,另外標誌暫存器裡有個of位它是針對有符號數的,如果是mov al,7fh add al,1 of位會置1 顯示有符號數溢位,因為7fh+1=128大於了有符號數的表示範圍。
11樓:夕見的
將al的內容直接相加(注意的是要進行的是十六進位制的加法,而不是十進位制的)後送到al暫存器中
組合語言中db指令的意義,組合語言中DB指令的意義
db作為組合語言中的偽操作命令,它用來定義運算元佔用的位元組數。在這裡b是byte的縮寫,即位元組,所以,該偽操作所定義的每個運算元佔有1個位元組 8位 如 message db hello 此時,字串 hello 中每個字元會佔用1個位元組,51微控制器中,用於定義位元組的內容。db 指令以表示式...
組合語言中b表示什麼,組合語言中 BX 表示什麼
您好,很高興為您解答。bx 表示的是乙個偏移位址。比如你ds 1000h的話。mov bx,1 那麼 mov ax,bx 那麼他就會尋找 段位址1000,偏移位址為0001h 的資料放入到ax中 mov ax,bx bx 這種方式叫做暫存器間接定址方式。即把 bx 指向的位址中的內容,送入ax暫存器...
組合語言中的dec是什麼意思,組合語言中的DEC是什麼意思
組合語言中,dec是減1指令,該指令使運算元的內容減1,然後再送回該運算元。該運算元可以是暫存器運算元 儲存器運算元。例如 dec al al內容減1,然後再送aldec ax ax減內容1,然後再送ax dec cont cont減內容1,然後再送cont 00h 30h 30h,30h位址在什麼...