西华大学实验报告
西华大学实验报告(理工类)
开课学院及实验室:电气信息学院6A-217 实验时间:年月日
装
订
线
五、实验过程记录(数据、图表、计算等) assume ds:data,cs:code,es:data
data segment
buffer1 db 1,2,3,4,5 ;定义字节
buffer2 db 6,7,8,9,0 ;定义字节
buffer3 db 100 dup(?) ;定义字节data ends
code segment
main proc far
begin:
push ds
mov ax,0000h
push ax
mov ax,data
mov ds,ax ;初始化
mov es,ax
lea si,buffer1 ;将buffer1的地址送给si lea bx,buffer2 ; 将buffer2的地址送给bx add bx,4 ;bx+4
code segment
mainproc far
assume cs:code
go:mov si,300h ;将300h给si
mov di,400h ;将400h给di
mov cx,50 ;将50给cx
next:mov al,[si] ;将[ds]:[si]处内存给al mov [di],al ;将al送到ds:[di]处
inc di ;di+1
dec cx ;cx-1
jnz next ;cx不到0,跳到next
mov si,300h ;再将si给300h
mov cx,50 ;cx赋予50
cld ;清除方向标志位
next1:lodsb ;将si处内存读到al
mov bl,al ;将al复制到bl
push cx ;cx入栈
lea di,buffer3 ;将buffer2的地址送给bx
mov cx,5 ;循环次数
m:
mov al,[si] ;将ds:[buffer1]处的值给al
add al,[bx] ;al=al+ds:[buffer2+4]
mov [di],al ;将al送给ds[buffer3]处
inc si ;si+1
dec bx ;bx-1
inc di ;di+1dec cx ;cx-1
jnz m ;cx>=0 则在m处循环
mov ah,4c ;结束
int 21h
ret
main endp
code ends
end begin
end
inc si ;si+1
mov cl,4 ;给cl赋4
ror al,cl ;al循环右移4位pop cx ;cx出栈
call disp ;调用disp子程序
mov al,bl ;再将bl给al
call disp ;再次调用disp
mov dl,' ' ;给dl赋予‘’
mov ah,02 ;ah赋予02
int 21h ;调用中断,显示字符
loop next1 ;循环50次
mov ah,4ch ;ah赋予4ch
int 21h ;调用中断,结束
ret ;子程序返回
main endp
六、实验结果分析及问题讨论disp proc
and al,0fh ;屏蔽高4位
cmp al,09h ;将al与9比较
ja asc ;大于9跳到asc
or al,30h ;小于9,加30h
jmp do0 ;跳到do
asc:add al,'A'-0ah ;al加‘a’到10的ASCII do0:mov dl,al ;将al送到dl
mov ah,02 ;ah赋予02
int 21h ;调用中断,显示字符
ret ;子程序返回
disp endp
code ends
end go。