发布时间 : 星期二 文章微机原理实验更新完毕开始阅读cc49f03ff121dd36a32d82e8
实验1-3 汇编语言实验
一、实验目的
熟悉汇编语言语法 熟悉8086常用指令
掌握BIOS中断调用及DOS功能调用
二、实验内容
1、编写一个汇编语言程序,要求从键盘输入一个小写字母,将其转化成大写字母并在屏幕上显示出来。
2、编写一个汇编语言程序,将字符串“Assembly Language Programming”全部转化为大写字母,存放到原来所在单元。
3、从键盘接收一串字符,并另起一行逆序显示该字符串。
三、实验步骤
1. 题目1的完整汇编语言程序如下,在实验环境中保存文件进行编译连接后,在DOS中运行文件,可实现将输入字母转换成小写输出。
DATA SEGMENT ;定义数据段 BUF DB 0DH,0AH,'PLEASE INPUT A CHAR:$' DATA ENDS CODE SEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK ;段寄存器指派伪指令 BEGIN:
MOV AX,DATA
MOV DS,AX ;初始化DS LEA DX,BUF ;偏移地址送寄存器 MOV AH,9
INT 21H ;9号调用显示字符串PLEASE INPUT A CHAR: MOV AH,1 ;1号调用,从键盘接收一个字符
INT 21H
CMP AL,61H ;若比“a”小转PEND处执行 JB PEND
CMP AL,7AH ;若比“z”大转PEND JA PEND
SUB AL,20H ;若在“a”和“z”之间,则减去20变为大写字母 MOV DL,AL ;转换后的字符存入DL寄存器 MOV AH,2 ;2号功能调用显示一个字符 INT 21H PEND:
MOV AH,4CH ;程序结束,返回DOS
INT 21H CODE ENDS END BEGIN
2. 题目2的完整汇编语言程序如下,运行可执行文件后将字符串“Assembly Language Programming”转换成大写“ASSEMBLY LANGUAGE PROGRAMMING”并显示。
DATA SEGMENT ;定义数据段 BUF DB 0DH,0AH,'Assembly Language Programming$' N DB $-BUF ;字符串长度
DATA ENDS
CODE SEGMENT ;定义代码段
ASSUME DS:DATA,CS:CODE ;段寄存器指派伪指令 BEGIN:
MOV AX,DATA
MOV DS,AX ;数据初始化 LEA DX,BUF
MOV AH,9 ;9号调用显示字符串Assembly language Programming INT 21H
MOV CX,N ;设置循环计数值 MOV SI,DX L: MOV AL,[SI]
CMP AL,61H ;若比“a”小转NEXT JB NEXT
CMP AL,7AH ;若比“z”大转NEXT JA NEXT
SUB AL,20H ;若在“a”和“z”之间,则减去20变为大写字母 MOV [SI],AL NEXT:INC SI
LOOP L ;循环 DISPLAY:
LEA DX,BUF
MOV AH,9 ;9号调用显示字符串 INT 21H
EXIT:MOV AH,4CH ;程序结束,返回DOS INT 21H CODE ENDS END BEGIN
3. 题目2的完整汇编语言程序如下,DOC中运行文件,从键盘输入任意一字符串,并回车键结束输入,在下一行便可逆序显示所输入的字符串。
DATA SEGMENT
STR1 DB 0DH,0AH, 'PLEASE INPUT A STRING:$' BUF DB 512 DUP(?) ;定义可输入的字符个数 CRLF DB 0DH,0AH,24H ;回车换行符 DATA ENDS CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA