微机原理上机实验报告

微机原理上机实验报告2

题目:DOS功能调用

问题1:编写程序段从几盘接收一个字符,如输入为Y或y,在屏幕上输出‘yes’;如输入为N或n,在屏幕上输出‘NO’; 然后退出。如输入其它字符,屏幕上输出‘please input again’,然后等待重新输入。

程序:

DA TAS SEGMENT

STR1 DB 'yes$'

STR2 DB 'no$'

STR3 DB 'PLEASE INPUT ONE WORD:','$'

buff db 100,?,100 dup(?)

DA TAS ENDS

STACKS SEGMENT STACK

DB 100 DUP(?)

STACKS ENDS

CODES SEGMENT

ASSUME CS:CODES,DS:DA TAS

START:MOV AX,DATAS

MOV DS,AX

MOV AH,01

INT 21H

CMP AL,'Y'

JE YES

CMP AL,'y'

JE YES

CMP AL,'N'

JE NO

CMP AL,'n'

JE NO

LEA DX,STR3

MOV AH,9

INT 21H

JMP START

YES: LEA DX,STR1

MOV AH,9

INT 21H

JMP EXIT

NO: LEA DX,STR2

MOV AH,9

INT 21H

JMP EXIT

EXIT:MOV AH,4CH

INT 21H

CODES ENDS

END START

执行结果:输入y或Y,程序输出yes随即关闭对话框,输入n或N,程序输出no随即关闭对话框。如果输入其他字符则输出语句且原字符不消失,直到输入为y,Y,N,n。

问题2:编程从键盘输入小写字符串(例如‘please’),并转换成相应的大写字符串输出(例如‘PLEASE’)。

程序:

DA TA SEGMENT

BUFF DB 100,?,100 dup(?)

STR DB 'please input some words:','$'

DA TA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA

START:

MOV AX,DATA

MOV DS,AX

LEA DX,STR

MOV AH,9

INT 21H

LEA DX,BUFF

MOV AH,0AH

INT 21H

MOV AH,02H

MOV DL,0AH

INT 21H

MOV DL,0DH

INT 21H

MOV CL,[BUFF+1]

MOV SI,1 ;首位未存储字符

KEY: INC SI ;SI自增,字符串开始向后逐字遍数MOV AL,[BUFF+SI]

CMP AL,0AH ;检查是否有输入

JZ EXIT

CMP AL,'0' ;检查输入的是否是数字

JB EXIT

CMP AL,'9'

JBE SHOW

CMP AL,'A' ;大小写判断

JB EXIT

CMP AL,'Z'

JBE XX

CMP AL,'a'

JB EXIT

CMP AL,'z'

JBE XX

XX:

XOR AL,20H ;大小写之间相互转换

SHOW: MOV AH,02H

MOV DL,AL

INT 21H

JMP KEY

LOOP KEY ;

EXIT:

MOV AH,4CH

INT 21H

CODE ENDS

END START

执行结果:打开.Exe文件,屏显please input some words: 输入小写字符串按回车结束输入,在新的一行将显示转换后的大写语句。随即对话框关闭。

相关文档