题目:询问用户姓名,并等待用户键入,用户输入姓名后敲击回车键,程序再把键入的姓名复制在屏幕上。

程序:

DATA SEGMENT USE16   
MESG DB 0DH,0AH
     DB 'What is your name ?$' ;一共9个字符
BUF  DB 30        ;程序员预置可容纳的字符个数(包括回车符)
     DB ?         ;随机值
     DB 30 DUP(?) ;开辟30个字节的内存区
DATA ENDS
CODE SEGMENT USE16
     ASSUME CS:CODE,DS:DATA

BEG:
     MOV AX,DATA
     MOV DS,AX

AGAIN:
     MOV AH,9
     MOV DX,OFFSET MESG ;取MESG的偏移地址
     ;LEA DX MESG ;等价于上一句
     INT 21H            ;询问姓名
     MOV AH,0AH         ;等待从键盘输入字符串
     MOV DX,OFFSET BUF  ;取BUF的偏移地址
     INT 21H            ;接收键入字符串
     MOV BL,BUF+1       ;把实际输入字符个数(不包括回车符)写入BUF+1单元
     MOV BH,0 
     ;实际键入的字符个数->BX
     MOV SI,OFFSET BUF+2     ;输入字符串从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,4CH
     INT 21H                 ;返回 DOS

CODE ENDS 
     END BEG

版权声明:本文为博主原创文章,未经博主允许不得转载。