程式設計題:
1、設vary中有一組8位的符號數,程式設計統計其中 正數、負數、零的個數,分別存 vm、vn、vk變數中。
具體程式:
stack segment para stack
dw 20h dup(0)
stack ends
data segment
vary db 23h,78h,56h,0abh,00h,0cdh,59h,14h,98h,0efh,00h,0c0h
cnt equ $-vary
vm db ?
vn db ?
vk db ?
data ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
mov bx,0
mov dl,0
lea si,vary
mov cx,cnt
lop1:
cmp byte ptr[si],0
je zero
js lop2
inc bh
jmp next
lop2:
inc bl
jmp next
zero:
inc dl
next:
inc si
loop lop1
mov vm,bh
mov vn,bl
mov vk,dl
mov ah,4ch
int 21h
code ends
end start
2、判斷方程ax2+bx+c=0是否有實根。若有實根,則將位元組變數tag置1,否則置0。假設a、b、c均為位元組變數,資料範圍為-128~127。
具體程式:
data segment
a db 7
b db 8
c db 6
tag db ?
data ends
code segment
assume ds:data,cs:code
start:
mov ax,data
mov ds,ax
mov al,b
imul al;乘法指令,求出b2的值並放入ax中
mov bx,ax
mov al,a
imul c
mov cx,4
imul cx
cmp bx,ax
jge yes
mov tag ,0
jmp done
yes: mov tag,1
done: mov ah,4ch
int 21h
code ends
end start
3、設在資料段中定義有三個變數x,y,z,其中x的值為8,y的值為9,請利用算術移位指令編寫程式,計算出下式的值(假設乘積的結果只有低16位有效)。
具體程式為:
data segment
x dw 8
y dw 9
z dw ?
data ends
assume cs:code,ds:data
code segment
start:
mov ax,data
mov ds,ax
mov ax,x
mov bx,y
add ax,bx ;x+y
shl ax,1 ;(x+y)*2
mov bx,ax
mov cl,2
shl ax,cl
adc ax,bx
mov z,ax
code ends
end start
4、程式設計實現: s=1+2+3+……+100 ,要求計算後的結果存放在變數s裡。
具體程式為:
data segment
s dw (?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov cx,100
mov ax,0h
mov bx,1h
loop1:
add ax,bx
inc bx
loop loop1
mov s,ax
mov ah,4ch
int 21h
code ends
end start
5、已知有兩個雙字長度的數data1和data2,要求用8086組合語言程式設計實現兩數相加,並將結果存放在result中,
採用高位址優先儲存結果(如1234h,5678h表示56781234h)。程式的資料段部分已給出,要求補充完整程式,實現上述要求的功能。
具體程式設計
data segment
data1 dw 5311h,8a13h ;表示資料8a135311h
data2 dw 4783h,9526h ;表示資料95264783h
result dw 2 dup(?) ; 存放多位元組加法的結果
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data
mov ds,ax
mov ax,data1
mov dx,data1+2
add ax,data2 ;低字部分相加
adc dx,data2+2 ;高字部分帶進製相加
mov result,ax ;存放低字部分相加結果
mov result+2,dx ;存放高字部分相加結果
code ends
end start
組合語言程式設計
1.彙編語句的三種基本型別 2.標號相關 3.變數相關 4.運算元定址方式 buffer dw 500 x 17 rept 500 這是乙個重複巨集,以下重複彙編500遍 x x 979 mod 65535 這句話我也不懂 dw x endm 巨集在這裡結束transto10 proc near 函...
組合語言程式設計
乙個完整的源程式通常由若干邏輯段組成,包括資料段 附加段 堆疊段和 段。它們分別對映到儲存器中的物理段上。每個邏輯段以segment語句開始,以ends結束,整個源程式用end語句結尾。段中存放源程式的所有指令碼 資料 變數等則放在資料段和附加段中。程式中可以定義堆疊段,也可以直接利用系統中的堆疊段...
《組合語言程式設計》說明
組合語言程式設計說明 我只是對其中的大部分東西作簡要的摘錄。一方面害怕自己忘記而沒有書籍查證 這本書是向圖書館借的 另一方面是現在大部分組合語言是基於win32平台的,而這本書是基於linux下面的彙編,值得學習。而又不敢獨享,遂與大家分享。基於以上原因呢,就沒有表明是原創的。為什麼從第四章開始?也...