1、微机原理与接口技术实验报告参考实验一 显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用。二、实验所用设备1. PC微机一台。三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。实验中可使用DOS功能调用(INT 21H)。(1) 显示单个字符输出 入口:AH=02H 调用参数:DL=输出字符 (2) 显示字符串 入口
2、:AH=09H 调用参数:DS:DX=串地址,$为结束字符 (3) 键盘输入并回显 入口:AH=01H 返回参数:AL=输出字符 (4) 返回DOS系统 入口:AH=4CH 调用参数:AL=返回码四、实验步骤1. 运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容; 5. 更改数
3、据区中的数据,考察程序的正确性。 图1-1 显示程序实验流程图五、程序清单DATA SEGMENT MES DB laoshihao:, 0AH,0DH,$ SD DB b DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET MES MOV AH, 09H INT 21H MOV DI, OFFSET SD MOV AL, DS:DI AND AL, 0F0H SHR AL,4 CMP AL, 0AH JB L1 ADD AL, 07H L1: ADD AL,
4、30H MOV DL, AL MOV AH, 02H INT 21H MOV AL, DS:DI AND AL, 0FH CMP AL, 0AH JB L2 ADD AL, 07H L2: ADD AL, 30H MOV DL, AL MOV AH, 02H INT 21H MOV AX, 4C00H INT 21H CODE ENDS END START 六、实验调试过程调试过程中出现警告,显示没有使用堆栈段。但是程序编写本身没有使用,因此程序运行相对正常。第一个实验熟悉了轻松汇编软件的操作,为之后的实验打下了基础。七、实验运行结果实验二 数据传送实验一、实验目的1. 熟悉Tddebug调试
5、环境和Turbo Debugger的使用; 2. 掌握与数据有关的不同寻址方式。 二、实验所用设备1. PC微机一台。 三、实验内容将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。实验程序:DDATA SEGMENT MSR DB LAOSHIXINKULE!$ LEN EQU $- MSR DDATA ENDS EXDA SEGMENT MSD DB LEN DUP(?) EXDA ENDS MYSTACK SEGMENT STACK DW 20 DUP(?) MYSTACK ENDS CODE SEGMENT ASSUME CS:CODE, DS:DDATA, E
6、S:EXDA START: MOV AX, DDATA MOV DS, AX MOV AX, EXDA MOV ES,AX MOV SI, OFFSET MSR MOV DI, OFFSET MSD MOV BX, 0 MOV CX, LEN NEXT: MOV AL, MSRBX MOV ES:MSDBX, AL INC BX LOOP NEXT PUSH ES POP DS MOV DX, OFFSET MSD MOV AH, 9 INT 21H MOV AX, 4C00H INT 21H CODE ENDS END START 四、实验步骤1. 运行Tddebug软件,选择Edit菜单编
7、写实验程序; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容; 5. 更改数据区中的数据,考察程序的正确性。 五、实验调试过程程序中使用了寄存器相对寻址的方式。编译、连接、运行后程序运行正常。输入的字符显示在屏幕上。六、实验运行结果实验三 数码转换程序实验一、实验目的掌握不同进制数及编码相互转换的程序设计方法。 二、实验所用设备PC微机一台。三、实验步骤1. 运行Tddebug软件,选择Ed
8、it菜单编写实验程序; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接; 3. 使用Rmrun菜单中的Run,运行程序,观察运行结果; 4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。 四、实验内容计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间
9、的数码转换关系如图3-1所示,数码对应关系如表3-1所示。图3-1 计算机与外设间的数码转换关系1将ASCII码表示的十进制数转换为二进制数 十进制数可以表示为:Dn10n+Dn-110n-1+D0100=Di10i 其中Di代表十进制数1、2、39、0。 上式可以转换为:Di10i=(Dn10+Dn-1)10)+Dn-2)10+D1)10+D0 由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位Dn开始作乘10加次位的操作,依次类推,则可求出二进制数结果。 本实验要求将缓冲区中的一个五位十进制数00012的ASCII码转换成二进制数,并将转换结果按位显示在屏幕上。转换过程的参考流程如
10、图3-2所示。(1)实验流程图图3-2 十进制ASCII转换为二进制数参考流程(2)实验程序DATA SEGMENT MSR DB 00012 LEN EQU $-MSR DATA ENDS CODE SEGMENT ; ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV SI,OFFSET MSR MOV CX,LEN-1 MOV AL,DS:SI MOV AH,0 SUB AX,30H A1: MOV BX,0AH MUL BX INC SI MOV DL,DS:SI MOV DH,0 SUB DX,30H ADD AX,DX D
11、EC CX JNZ A1 MOV CL,16 MOV BX,AX A2: ROL BX,1 MOV DL,BL AND DL,01H ADD DL,30H MOV AH,2H INT 21H DEC CL JNZ A2 MOV AX,4C00H INT 21H CODE ENDS END START(3)调试过程调试过程正常没有出现问题。(4)实验结果2将十进制数的ASCII码转换为BCD码 本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一字节ASC
12、II码取其低四位即变为BCD码。转换部分的实验流程参见3-3。(1)实验流程图3-3 十进制ASCII转换为BCD码参考流程 (2)实验程序DATA SEGMENT STRING DB INPUT:,$ STRING1 DB OUTPUT:,$ MSR DB 6,?,6 DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX LEA DX,STRING MOV AH,09H INT 21H MOV DX,OFFSET MSR MOV AH,0AH INT 21H MOV DL,0AH M
13、OV AH, 02H INT 21H MOV DL,0DH MOV AH, 02H INT 21H LEA DX,STRING1 MOV AH,09H INT 21H MOV CL,MSR+1 MOV SI,0002H MOV BX,OFFSET MSR A1: MOV AL,BX+SI CMP AL,40H JNC B1 SUB AL,30H MOV CH,0 PUSH CX MOV CL,4 MOV DH,AL SHL DH,CL A2: ROL DH,1 MOV DL,DH AND DL,01H ADD DL,30H MOV AH,02H INT 21H DEC CL JNZ A2 PO
14、P CX INC SI DEC CL JNZ A1 B1: JZ B2 MOV DL,46H MOV AH,02H INT 21H INC SI DEC CL JNZ A1 B2: MOV AX,4C00H INT 21H CODE ENDS END START(3)调试过程调试过程中在换行显示时遇到了问题,无法换行显示。经过检查发现在显示过程中的换行代码写错了,改正之后程序显示正常。(4)实验结果3将十六进制数的ASCII码转换为十进制数 十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为:ND=D4104+D3103+D2102+D110+D0 因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。(1)实验流程图3-4 将十六进制数的ASCII码转换为十进制数(2)实验程序DATA SEGMENT MS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1