文档库

最新最全的文档下载
当前位置:文档库 > 汇编与接口实验四 循环程序设计

汇编与接口实验四 循环程序设计

课程 _汇编与接口第 1 页共 6 页

系别_计算机学院 ___________ __ 实验日期 2013年 11月 30 日专业班级计算机科学与技术5班_组别____ ____ 实验报告日期 2013年 12月 1日姓名___ ___学号报告退发 ( 订正、重做 )

同组人____ ________ _____无教师审批签字

实验四循环程序设计

一、实验目的

(1)掌握汇编语言子程序设计方法。

(2)掌握主程序与子程序之间的调用关系及调用方法。

(3)掌握通过寄存器传送参数的方法。

二、实验环境

(1) 硬件环境:计算机系统windows;

(2) 软件环境:装有MASM、DEBUG、LINK、等应用程序。

三、实验内容(方法步骤):

编程实现:十进制到十六进制数转换程序。

程序要求:从键盘取得一个十进制数,然后把该数以十六进制形式在屏幕上显示出来。

四、实验说明

(1) 键盘输入的十进制数(ASCII),要将它转换成二进制存放。?子程序:

DECIBIN

(2) 二进制转换成十六进制数并显示?子程序:BINIHEX

(3) 为避免屏幕上的重叠,必须有回车和换行功能。?子程序:CRLF

用三个子程序联合实现题目要求?联合由主程序达到。将BX寄存器作为过程之间传送转换数据的“ 交通员”。

五、实验步骤

(1)编辑、汇编源程序,生成相应的可执行文件(.EXE)

(2)检查程序执行的结果是否正确

六、流程图

主程序流程图如下图:

汇编与接口实验四 循环程序设计

子程序DECBIN流程图如下图:

汇编与接口实验四 循环程序设计

子程序BINIHEX 流程图如下图:

汇编与接口实验四 循环程序设计

汇编与接口实验四 循环程序设计

汇编与接口实验四 循环程序设计

七、源程序

data segment

str1 db 0DH,0AH,'input dec = $' data ends

code segment

main proc far

assume cs:code,ds:data starts:mov ax,data

mov ds,ax

mov dx,offset str1

mov ah,9

int 21h

call DECIBIN

call BINIHEX

call CRLF

jmp main

ret

main endp

DECIBIN PROC

MOV BX,0

NEWCHAR:

MOV AH,1

INT 21H

cmp al,'#'

je out1

SUB AL,30H

JL EXIT

CBW

XCHG AX,BX

MOV CX,10D

MUL CX

XCHG AX,BX

ADD BX,AX

JMP NEWCHAR

EXIT:

RET

DECIBIN ENDP

CRLF PROC NEAR

MOV AH,02H

MOV DL,0AH

INT 21H

MOV AH,02H

MOV DL,0DH

INT 21H

RET

CRLF ENDP

BINIHEX PROC NEAR

START:

MOV CH,4

NOTATE:MOV CL,4

ROL BX,CL

MOV AL,BL

AND AL,0FH

ADD AL,30H

CMP AL,3AH

JL PRINTIT

ADD AL,7H

PRINTIT:MOV DL,AL

MOV AH,2

INT 21H

DEC CH

JNZ NOTATE

RET

BINIHEX ENDP

out1:mov ah,4ch

int 21h

code ends

end starts

八、问题思考

(1)当输入“#”时,退出主程序,如何修改程序?

答:在子程序DECIBIN中的调入1号功能输入后面增加两条语句cmp al,'# je out1,以及退出语句:out1:mov ah,4ch int 21h

即对输入的数与‘#’比较,若相等,则跳转到退出,若不相等,则继续执行子程序DECIBIN (2)说明用寄存器传送参数的过程及其具体方法,各子程序的应用。

答:程序在传递参数的时候,一般会用到AX、BX、CX寄存器,并根据需要选择用哪个寄存器,以及使用哪个寄存器的低位或高位,具体方法:功能调用是都是用AX寄存器的高八位(AH)如:mov ah 2 int 21h;需要用到计数器时就使用CX。子程序中主要是用AX寄存器来存数,AH来实现功能调用,CX来计数,在DECIBIN子程序中就用到cx来计数

(3)实验结果及所遇到问题,并说明解决的方法。

实验结果:

问题:刚开始子程序部分看不懂,但并不影响写主函数,后来通过查看课本,以及对运行程序的理解,弄懂了整个程序执行过程

九、实验小结

小结:通过本次实验,掌握了子程序的设计方法,以及主程序与子程序之间的调用关系及调用方法。知道它们是如何通过寄存器传递参数的,并间接掌握了十进制如

何转换成十六进制。