組合語言程式設計題

2021-08-21 01:41:16 字數 2999 閱讀 1982

程式設計題: 

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下面的彙編,值得學習。而又不敢獨享,遂與大家分享。基於以上原因呢,就沒有表明是原創的。為什麼從第四章開始?也...