当前位置:文档之家› 汇编语言 实验七子程序设计2

汇编语言 实验七子程序设计2

实验七子程序设计
实验类型:综合性
实验目的:
1、掌握主程序与子程序之间的调用关系及调用方法。

2、掌握子程序调用过程中近程调用与远程调用的区别。

3、掌握通过堆栈转送参数的方法。

实验步骤:
1、进入DOS环境
2、输入命令:path c:\windows\command;c:\turbo\masm保证实验过程中使用的所有命令都在当前路径直接调用
3、启动EDIT编辑器输入程序代码
4、检查语法错误,如无错误以ASM为后缀名保存文件(如文件名chen.asm)
5、运行命令MASM CHEN.ASM生成OBJ文件
6、如果出错请回到第3步再纠正错误
7、运行命令LINK CHEN.OBJ(此时提示没有堆栈错误请忽略)生成EXE文件
8、运行DEBUG调入可执行程序DEBUG CHEN.EXE(以下DEBUG 命令请参看第一次实验内容)
9、执行反汇编U
10、查看程序结束地址
11、运行G 命令运行程序
12、运行D和R命令查看相应的内存单元和寄存器的数据是否与结果一致,如果不一致回到第3步纠正错误,也可以运行T命令逐条运行程序寻找错误指令位置再做修改。

实验内容:
从键盘输入一组十进制数据,按从小到大的顺序排列,并以十进制的形式输出。

要求:输入过程有键盘锁;输入、输出有提示;输入和输出之间换行。

data segment
a dw 7 dup(?)
data ends
decihex segment
main proc far
assume cs:decihex,ds:data
push ds
mov ax,0
push ax
mov ax,data
mov ds,ax
mov cx,07h
lea si,a
loop1:call decibin
mov [si],bx
add si,2
call crlf
loop loop1
;********************************
mov cx,7
dec cx
loop3:mov di,cx
lea si,a
loop2:mov ax,[si]
cmp ax,[si+2]
jng coti
xchg ax,[si+2]
mov [si],ax
coti:add si,2
loop loop2
mov cx,di
loop loop3
;*********************************
call crlf
;*********************************
mov cx,7
lea si,a
loop5:call output
call crlf
add si,2
loop loop5
ret
main endp ;............................ decibin proc near
mov bx,0 newchar:
mov ah,1
int 21h
sub al,30h
jl exit
cmp al,9d
jg exit
cbw
xchg ax,bx
mov dx,10d
mul dx
add bx,ax
jmp newchar
exit: ret
decibin endp ;............................. crlf proc near
mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h
ret
crlf endp ;............................. output proc near ; begin:
mov ax,[si]
mov bl,10
div bl
; output:
mov dl,al
add dl,30h
mov bl,ah
mov ah,2
int 21h
mov dl,bl
add dl,30h
mov ah,2
int 21h
ret
output endp ;............................ decihex ends
end。

相关主题