組合語言 底下的程式顯示cmp,0和test不正確為什麼啊這不是間接定址嗎

2021-07-14 02:13:40 字數 1084 閱讀 5477

1樓:匿名使用者

已經改過了,[si]是暫存器間接定址,但是無變數名的暫存器變數定址屬於無型別量,後面的立即數也是無型別量,所以不符合語法規則,使用ptr偽指令即可修改。。

還有x屬於位元組型變數,所以不要和8000h比,和80h比就夠了,你不就是想驗證一下零的最高位是一還是零嗎?

data segment

x db -9,4,0,0,'$'

p_count db 0

z_count db 0

n_count db 0

y equ $-x

data ends

sata segment stack

dw 100h dup (?)

sata ends

code segment 'code'

assume cs:code,ds:data,ss:satastart:mov ax,data

mov ds,ax

mov ax,sata

mov ss,ax

xor ax,ax

xor dx,dx

mov cx,y

lea si,x

sub si,1

test1:add si,1

cmp byte ptr [si],0

jz nz

add ah,1

jmp ok

nz:test byte ptr [si],80hjz z

add al,1

jmp ok

z:add dl,1

jmp ok

ok:dec cx

cmp cx,0

jnz test1

mov p_count,al

mov z_count,ah

mov n_count,dl

mov ah,4ch

int 21h

code ends

end start

2樓:匿名使用者

error a2070: invalid instruction operands

需要使用byte ptr 之類的限定來指明運算元的大小。

微控制器(組合語言)程式,微控制器組合語言

開發當bai然是用c,又快又易懂好維 du護,但是想要優zhi化程式dao還是要懂彙編的,要不然實回現同樣乙個功能答的程式,好的程式設計師可以把程式設計得又短又快,而不做優化的可能會又臭又長,2k以下可以搞定的,你非要搞到4k以上去那最終產品的成本每個至少會相差幾毛到一兩塊錢,而且成本公升高時質量卻...

組合語言資料偽指令DUP用法,組合語言中的dup有什麼作用

茲斬鞘 10 dup 1 重複定義了10個字元素,初始值為1,佔用10 2 20個位元組。5 dup 重複定義了5個字元素 其初始值實際為0 佔用5 2 10個位元組 因此總共佔用30個位元組。具體分析 在彙編定義變數的時候會用到dup,變數名 型別 初值表,dup用於把一個相同值賦值若干次,重複次...

組合語言怎麼樣用子程式計算

子程式如下 內容 add proc near mov cx,10 mov bx,0 again mov ax,1 add bx,ax inc ax loop again add endpret 主要 xor cx,cx mov cl,10 xor ax,ax xor bx bx l1 inc ax ...