实验三  DOS功能调用实验
一、 实验目的和要求
1、 掌握汇编语言集成编译软件的使用方法;
2、 能独立编写简单的程序,调试运行并验证结果。
二、 实验软件
      星研集成环境软件。
三、 实验内容
1、 验证性实验(二选一)
(1) 代码转换程序
具体要求:参见《微机原理及接口技术实验指导书》P.8“2. 代码转换实验”的相关内容。
(2) 人机会话程序
具体要求:应用DOS中断的1290AH四个子功能,编写人机会话程序,获取用户姓名。首先,计算机询问用户姓名,等待用户输入姓名的汉语拼音;然后将它显示在屏幕上,请用户确认;当用户键入“Y”,程序结束,否则再次询问用户姓名。
源程序如下:
DATA    SEGMENT
MESG1    DB 0DH,0AH,’What is your name? $’
MESG2    DB ‘? (Y/N) $’
BUF    DB 30
    DB ?
    DB 30 DUP (?)
DATA    ENDS
CODE    SEGMENT
    ASSUME CS:CODE,DS:DATA
BEG:    MOV  AX, DATA
    MOV  DS, AX
AGAIN:    MOV  AH, 9
    MOV  DX, OFFSET MESG1
      INT  21H
    MOV  AH, 0AH
    MOV      DX, OFFSET  BUF
    INT  21H
    MOV  BL, BUF+1
    MOV  BH, 0
    MOV  SI, OFFSET  BUF+2
    MOV  BYTE PTR [BX+SI],’$’
    MOV  AH, 2
    MOV  DL, 0AH
    INT  21H
      MOV  AH, 9
    MOV  DX, OFFSET  BUF+2
    INT  21H
MOV  AH, 9
    MOV  DX, OFFSET  MESG2
    INT  21H
    MOV  AH, 1
    INT  21H
    CMP  AL, ’Y’
    JNZ  AGAIN
    MOV  AH, 4CH
    INT  21H
CODE    ENDS
    END  BEG
(3) 接收小写字母转换成大写字母并显示程序
具体要求:利用DOS中断的01号子功能,接收键盘输入的一串字符并存入内存单元,当接收到回车键时,将小写字母的ASCII码转换为大写字母的ASCII码,再利用02号子功能将其显示在屏幕上。
源程序如下:
DATA    SEGMENT
BUF    DB 200 DUP (?)
DATA    ENDS
CODE    SEGMENT
    ASSUME CS:CODE,DS:DATA
START:    MOV  AX, DATA
    MOV  DS, AX
    MOV  SI, OFFSET BUF
    MOV  CL, 00H
A1    MOV  AH, 01H
    INT  21H
    CMP  AL, 0DH
    JZ  A2
    SUB  AL, 20H
    MOV  [SI], AL
    INC  SI
      INC  CL
    JMP  A1
A2    MOV  DL, 0AH
    MOV  AH, 02H
    INT  21H
    MOV  DL, 0DH
    INT  21H
    MOV  SI, OFFSET BUF
    MOV  CH, 00H
A3:    MOV  DL, [SI]
    MOV  AH, 02H
    INT  21H
    INC  SI
    LOOP  A3
    MOV  AH, 4CH
    INT  21H
CODE    ENDS
    END  START
2、 拓展性实验
简单计算器程序设计
具体要求:先在屏幕上显示“PLEASE INPUT X:”,然后接收键盘输入的X值;回车换行后,再显示“PLEASE INPUT Y:”,然后接收键盘输入的Y值;回车换行后,再显示“PLEASE INPUT Z:”,然后接收键盘输入的Z值;回车换行后,再显示“PLEASE INPUT W:”,然后接收键盘输入的W值;回车换行后,最终在屏幕上显示“TOTAL =”,并将表达式“[W-(X+120)*Y+200]/Z”以及计算结果显示在屏幕上。完成相应程序的流程图、汇
编语言程序设计,进行调试并验证结果。
参考程序:《微机原理及接口技术实验指导书》P.9汇编语言指导书实验三“1.编写计算下面函数值的程序”的相关内容。