微机原理实验 联系客服

发布时间 : 星期二 文章微机原理实验更新完毕开始阅读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