1樓:匿名使用者
a2,b2,是a的平方,還是a*2?
兩個數相乘,就要考慮溢位問題。y是32位?還是16位?需不需要考慮溢位?
dseg segment
org d ;開始地址d
a dw ?
b dw ?
c dw ?
dseg ends
assume cs:cseg, ds:dsegcseg segment
start:
mov ax, dseg
mov ds, ax
mov ax, a
shl ax, 1 ; ax * 2
mov bx, b
shl ax, 1 ; bx * 2
add bx, c ; 2b +c
add ax, bx ; a2+(b2+c)mov y, ax
mov ah, 4ch
int 21h
cseg ends
end start
2樓:永恆
d dw 3 dup(?)
y dd ?
lea si,d
mov ax,[si]
mov bx,ax
mul bx
mov cx,[si+2]
mov bx,0
shl cx,1
adc dx,bx
add ax,cx
adc dx,bx
add ax,[si+4]
adc dx,bx
mov word ptr y,ax
mov word ptr y+2,dx
組合語言題目,求詳解
3樓:匿名使用者
mov di,offset buff 取陣列buff的首地址到di暫存器中
mov cx,000ah 設定迴圈次數
mov bl,0 做計數器用,用來記錄陣列buff中為0的位元組的個數,賦初值為0
goon:mov al,byte ptr [di] 將陣列的buff的一個位元組的資料放進al暫存器中
and al,al al中的資料與al中的資料做與運算,用來作為下一條跳轉指令的跳轉條件
jnz next 上一條指令運算不為0就跳轉到標號next處
inc bl 若 and al,al 這條指令的運算結果為0,bl暫存器就加1
next:inc di dl加1,dl最開始是陣列buff的首地址,加1相當於指向下一個位元組
loop goon cx先減1,判斷cx是否為0,若為0就跳出迴圈,不為0就迴圈,迴圈從標號goon處開始
hlt 停機
buff db 23h,54h,00h,83h,98h,36h,00h,49h,00h,73h
這段彙編**的作用是判斷單元大小為一位元組的陣列buff中有多少個位元組為0,並將結果儲存在bl暫存器中
微機 組合語言的題目
4樓:匿名使用者
一開始沒看懂你想問什麼,看了下**才明白。
你是想問為什麼mov dl, [si+1]之後,dl=(37h)吧。
因為si指向了v3這個陣列,所以[si+1]指向了陣列的第2個元素,即'7'這個字元
而'7'的ascii碼值,就是37h,你看不懂是因為你們老師沒有告訴你們,學彙編要記憶一些重要的字元的ascii碼值。
如'a', 'a', '0', 空格, 回車,換行,tab鍵等。
另外 '0'=30h,'a'=41h, 'a'=61h, 所以'a'-'a'=20h,'a'-'9' = 8這些關係都要記住。彙編在許多場合,都需要與這些數值的交道。
附張圖,網上找的。
<組合語言> 題目請教
5樓:湯旺河邊
這是個迴圈程式,共執行4次迴圈體。功能是:把dx:ax組成的32位二進位制數(dx為高位字,ax為低位字)整體左移4位,相當於一個32位二進位制數乘以16。
組合語言程式設計題,組合語言程式設計題目,線上等答案!!!急!
mov ah,1 int 21h cmp al,a jb l1 cmp al,z 1 jnb l1 and al,5fh l1 mov dl,al mov ah,2 int 21h include main char a 100 char p a scanf s a while p 0 if p a...
組合語言程式設計,組合語言程式設計
教你一個小招,用vc6.0編好一個c的程式,然後alt 8可以檢視彙編程式 1 include 2 void main void 3 00401055 jmp main 21h 00401031 10 for i 0 i 4 i 00401057 mov dword ptr ebp 14h 0 00...
什麼是組合語言,什麼是彙編和組合語言?
組合語言 assembly language 是面向機器的程式設計語言。在彙編語閤中,用助記符 memoni 代替操作碼,用地址符號 symbol 或標號 label 代替地址媽。這樣用符號代替機器語盲的二進位制碼,就把機器語音變成了組合語言。於是組合語言亦稱為符號語言。使用組合語言編寫的程式,機器...