must be in segment block c

實驗5 編寫、調試具有多個段的程序

(5)程序如下,編寫code段中代碼,將a段和b段中的數據依次相加,將結果存到C段中。

(三個程序)

 

assume cs:code

a segment

    db 1,2,3,4,5,6,7,8

a ends

b segment

    db 1,2,3,4,5,6,7,8

b ends

c segment

    db 0,0,0,0,0,0,0,0

c ends


assume cs:code

a segment
	
	db  1,2,3,4,5,6,7,8  ;ds
	
a ends

b segment

	db 1,2,3,4,5,6,7,8 ;es

b ends

cd segment 

	db 0,0,0,0,0,0,0,0 ;ss
	
cd ends

code segment

start:
	
	mov ax,a
	mov ds,ax
	mov ax,cd
	mov ss,ax
	mov bx,0
	mov cx,8
	
s:	
	mov al,[bx]
	add ss:[bx],al
	inc bx
	loop s

	mov cx,8
	mov ax,b
	mov es,ax
	mov bx,0
	
s0:
	mov al,es:[bx]
	add ss:[bx],al
	inc bx
	
	loop s0
	
	mov ax,4c00h
	int 21h
	
	
	
code ends
end start
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	

assume cs:code

a segment
	
	db 1,2,3,4,5,6,7,8
	
a ends

b segment 
	
	db 1,2,3,4,5,6,7,8

b ends

c1 segment

	db 0,0,0,0,0,0,0,0
	
c1 ends

code segment

start:

	mov ax,a
	mov ds,ax ;將a段地址放入ds
	
	mov ax,b
	mov es,ax ;將b段地址放入es中
	
	mov bx,0
	mov cx,8
	
s:	mov al,[bx]
	add al,es:[bx]   ;這裏是把a,b,裏的數據想加再複製到c段
	
	mov dx,c1
	mov ds,dx
	
	mov [bx],al
	
	mov ax,a ;將ds重新指回a段//重點的一步
	mov ds,ax
	
	inc bx
	
	loop s
	
	mov ax,4c00h
	int 21h

code ends
end start	
	
	
	
	
	
	
	
	
	
	
	
	
	
	
	



==================================優化後的=====================================

assume cs:code

a segment
	
	db 1,2,3,4,5,6,7,8

a ends

b segment

	db 1,2,3,4,5,6,7,8
	
b ends

c1 segment ;這裏不能用c,c是關鍵字

	db 0,0,0,0,0,0,0,0
	
c1 ends

code segment

start:

	mov ax,a
	mov ds,ax
	mov ax,b
	mov es,ax
	mov ax,c1
	mov ss,ax
	
	mov bx,0
	mov cx,4 ;改爲8後,inc bx
	
s:	
	mov ax,[bx]
	add ax,es:[bx]
	mov ss:[bx],ax
	
	add bx,2
	loop s
	
	mov ax,4c00h
	int 21h
	
code ends
end start
	
	
	
	
	
	
	
	
	


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章