- 12
- 0
- 约5.68千字
- 约 14页
- 2021-11-26 发布于山东
- 举报
微机原理实验分解
微机原理实验分解
PAGE / NUMPAGES
微机原理实验分解
实验 1-3 汇编语言实验
一、实验目的
熟悉汇编语言语法
熟悉 8086 常用指令
掌握 BIOS 中断调用及 DOS 功能调用
二、实验内容
1、编写一个汇编语言程序,要求从键盘输入一个小写字母,将其转化成大写字母
并在屏幕上显示出来。
2、编写一个汇编语言程序, 将字符串 “ Assembly Language Programming全部”转化为
大写字母,存放到原来所在单元。
3、从键盘接收一串字符,并另起一行逆序显示该字符串。
三、实验步骤
题目 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
MOV DL,AL
MOV AH,2
;若在 “ a和”“ z之”间,则减去 20 变为大写字母
;转换后的字符存入 DL 寄存器
;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
题目 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
MOV DS,AX
LEA DX,STR1 ;偏移地址送到寄存器
MOV AH,9 ;9 号调用显示字符串
INT 21H
MOV SI,OFFSET BUF ;指针指向待显示字符串尾部
AGAIN:
MOV AH,01 ;输入字符
INT 21H
CMP AL,0DH ;是回车吗
JE DISP ;是 ,转显示
DEC SI ;指针减 1
MOV [SI],AL ;存入输入的字符
JMP AGAIN ;继续输入
DISP:
MOV AH,09 ;显示
原创力文档

文档评论(0)