1、返回参数:AL=输出字符 (4) 返回DOS系统 AH=4CH AL=返回码四、实验步骤1. 运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示; 2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 使用Rmrun菜单中的Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。图1-1 显示程序实验流程图五、程序清单DATA SEGMENT MES DB laoshih
2、ao:, 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, 30H MOV DL, AL MOV AH, 02H AND AL, 0FH JB L2 L2: MOV AX, 4C00H C
3、ODE ENDS END START 六、实验调试过程调试过程中出现警告,显示没有使用堆栈段。但是程序编写本身没有使用,因此程序运行相对正常。第一个实验熟悉了轻松汇编软件的操作,为之后的实验打下了基础。七、实验运行结果实验二 数据传送实验1. 熟悉Tddebug调试环境和Turbo Debugger的使用;2. 掌握与数据有关的不同寻址方式。将数据段中的一个字符串传送到附加段中,并输出附加段中的目标字符串到屏幕上。实验程序:DDATA SEGMENT MSR DB LAOSHIXINKULE!$ LEN EQU $- MSR DDATA ENDS EXDA SEGMENT MSD DB LEN
4、 DUP(?) EXDA ENDS MYSTACK SEGMENT STACK DW 20 DUP(? MYSTACK ENDSDDATA, ES:EXDA MOV AX, DDATA 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 END START1. 运行Tddebug软件,选择
5、Edit菜单编写实验程序;五、实验调试过程程序中使用了寄存器相对寻址的方式。编译、连接、运行后程序运行正常。输入的字符显示在屏幕上。六、实验运行结果实验三 数码转换程序实验掌握不同进制数及编码相互转换的程序设计方法。 PC微机一台。三、实验步骤四、实验内容计算机输入设备输入的信息一般是由ASCII码或BCD码表示的数据或字符,CPU用二进制数进行计算或其它信息处理,处理结果的输出又必须依照外设的要求变为ASCII码、BCD码或七段显示码等。因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。计算机与外设间的数码转换关系如图3-1所示,数码对应关系如表3-1所示。图3-1 计算机与外设间
6、的数码转换关系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码转换成二进制数,并将转换结果按位显示在屏幕上。转换过程的参考流程如图3-2所示。(1)实验流程图图3-2 十进制ASCII转换为二进制数参考流程(2)实
7、验程序00012 LEN EQU $-MSR CODE SEGMENT ;CODE,DS: 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: MOV DH,0 SUB DX,30H ADD AX,DX DEC 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 DEC CL JN
8、Z A2 MOV AX,4C00H(3)调试过程调试过程正常没有出现问题。(4)实验结果2将十进制数的ASCII码转换为BCD码 本实验要求将键盘输入的一个五位十进制数54321的ASCII码存放入数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。若输入的不是十进制数的ASCII码,则输出“FF”。提示:一字节ASCII码取其低四位即变为BCD码。转换部分的实验流程参见3-3。(1)实验流程图3-3 十进制ASCII转换为BCD码参考流程 STRING DB INPUT:, STRING1 DB OUTPUT: MSR DB 6,?,6 DUP(? LEA DX,STRING
9、MOV AH,09H MOV DX,OFFSET MSR MOV AH,0AH MOV DL,0AH MOV DL,0DH LEA DX,STRING1 MOV CL,MSR+1 MOV SI,0002H MOV BX,OFFSET MSR 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 ROL DH,1 MOV DL,DH MOV AH,02H POP CX B1: JZ B2 MOV DL,46H B2:调试过程中在换行显示时遇到了问题,无法换行显示。经过检查发现在显示过程中的换行代码写错了,改正之后程序显示正常。3将十六进制数的ASCII码转换为十进制数 十六位二进制数的值域为0-65535,最大可转换为五位十进制数。五位十进制数可表示为:ND=D4104+D3103+D2102+D1因此,将十六位二进制数转换为五位ASCII码表示的十进制数,就是求D1-D4,并将它们转化为ASCII码。本实验要求将缓冲区中存放的000CH的ASCII码转换成十进制数,并将转换结果显示在屏幕上。图3-4 将十六进制数的ASCII码转换为十进制数 MS
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1