云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 汇编语言程序设计实验指导

汇编语言程序设计实验指导

  • 62 次阅读
  • 3 次下载
  • 2025/12/9 16:39:54

汇编语言程序设计 140

实验四 完整段定义程序实现

实验目的

1、掌握完整段格式定义的程序设计方法;

2、掌握伪指令:SEGMENT、ENDS、ASSUME、END、OFFSET、DUP; 3、掌握汇编语言程序中指名程序入口的方法; 4、了解用INT 21H 的4C号功能调用返回系统的方法; 5、掌握用MASM、LINK工具进行汇编和链接的过程。

实验内容

要求程序中实现对键盘输入的字符作如下处理:

? 如果输入的是小写字母则转换成对应的大写字母并显示在屏幕上; ? 如果输入的是大写字母则转换成对应的小写字母并显示在屏幕上; ? 如果输入的是键盘上的Esc键则退出程序执行; ? 按其它任意可显示键,则不作处理,直接显示输出。

实验步骤

1、编辑下列程序:

DATA SEGMENT ;数据段定义

MESSAGE DB 'Please input your key!',0DH,0AH,'$'

DATA ENDS

STACK SEGMENT PARA STACK 'STACK' ;堆栈段定义

DB 50 DUP(?)

STACK ENDS

CODE SEGMENT ;代码段

ASSUME CS:CODE,DS:DATA,SS:STACK ;分配段寄存器

START: MOV AX,DATA

MOV DS,AX

MOV DX,OFFSET MESSAGE MOV AH,9

INT 21H ;显示提示信息

AGAIN: MOV AH,1

INT 21H ;读入一个键盘按键

CMP AL,1BH ;按的是ESC键(ASCII码为1BH)则退出程序 JE EXIT CMP AL,61H JB NEXT

汇编语言程序设计实验指导 141

CMP AL,7AH JA NEXT

SUB AL,20H ;ASCII码在61H和7AH之间(小写字母)则转换为大写字母 JMP DISP

NEXT: CMP AL,41H

JB DISP CMP AL,5AH JA DISP

ADD AL,20H ;ASCII码在41H和5AH之间(大写字母)则转换为小写字母

DISP: MOV DL,AL

MOV AH,2

INT 21H ;显示当前字符 JMP AGAIN ;循环

EXIT: MOV AH,4CH ;结束程序

INT 21H

CODE ENDS

END START ;指定START标号为程序入口地址

2、把上述程序保存为ASM源文件,利用MASM根据对源文件进行汇编,产生.OBJ文件,若汇编时提示有错,编辑工具修改源程序后重新汇编,直至通过。

3、用LINK将.OBJ文件连接成可执行的.EXE文件。

4、在DOS状态下运行LINK产生的.EXE文件,按过键盘之后在屏幕上显示实验要求的字符,按ESC键可返回DOS。

注:汇编过程中若出现错误,可参阅本章最后的实验附录。 5.把上述程序改为简化段定义格式,再汇编,查看执行结果。

汇编语言程序设计 142

实验五 分支结构程序设计

实验目的

1、掌握利用无条件转移指令JMP和有条件转移指令实现多分支程序的设计方法。 2、掌握用DOS的中断调用,实现再程序执行过程中从键盘动态输入字符串的方法。 3、掌握程序中标号的定义和使用。

实验内容

实现从键盘输入一个月份数值(1-12),根据输入的月份数值显示相应的月份英文单词缩写,如输入5则显示May。

实验步骤

1、编辑下列程序:

.model small .stack .data

mon db 'Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec' msg1 db 'Please input a month(1-12) :',13,10,'$' msg2 db 'Input error! Now try again...',13,10,'$' buffer label byte ;定义输入月份的输入缓冲区 maxlen db 3 ;最多2个数字,包括一个回车 actlen db ? ;保存实际输入的字符个数

string db 3 dup(?) ;保存输入的月份数字内容(ASCII码) .code .startup

shuru: ;开始输入月份编号 lea dx,msg1 mov ah,09h

int 21h ;显示提示信息 lea dx,buffer mov ah,0ah

int 21h ;输入月份数值

cmp actlen,0 ;若没有输入月份则转出错处理 je shuruerr

;以下判断输入月份是否合法

lea di,string cmp actlen,2

je da10 ;若输入的是2位数月份值则转到da10标号处执行 mov al,string ;若只输入1位数字月份值,则读出该值 and al,0fh ;把ASCII码转换为对应数字

汇编语言程序设计实验指导 143

jmp jisuan da10:

mov al,string and al,0fh ;把月份数值十位的ASCII码转换为对应数字(如12月的1字) mov bl,10 mul bl

and string[1],0fh ;把月份数值个位的ASCII码转换为对应数字 add al,string[1] ;十位加上个位 (如12月) jisuan: ;以下计算偏移地址 cmp al,1 ;比1小是非法月份

jb shuruerr ;若月份值小于1则转出错处理 cmp al,12

ja shuruerr ;比12大也是非法月份 sub al,1 ;月份值减1 shl al,1

shl al,1 ;月份再乘4对应了MON字符串中从首地址开始的字符相对位置 xor ah,ah ;1月份从0位置开始即JAN,...5月份从位置16开始即MAY lea si,mon ;找到被显示月份字符的位置 add si,ax mov cx,3

output: mov dl,[si] ;输出对应月份英文缩写 mov ah,2 int 21h inc si

loop output .exit 0

shuruerr: lea dx,msg2 ;输入出错时提示出错,并转到程序起始处重新执行 mov ah,09h int 21h jmp shuru end

2、程序汇编通过后,运行程序察看输出结果。

3、程序运行中不输入月份值(直接回车),或输入非法月份值,观察程序执行的情况。

搜索更多关于: 汇编语言程序设计实验指导 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

汇编语言程序设计 140 实验四 完整段定义程序实现 实验目的 1、掌握完整段格式定义的程序设计方法; 2、掌握伪指令:SEGMENT、ENDS、ASSUME、END、OFFSET、DUP; 3、掌握汇编语言程序中指名程序入口的方法; 4、了解用INT 21H 的4C号功能调用返回系统的方法; 5、掌握用MASM、LINK工具进行汇编和链接的过程。 实验内容 要求程序中实现对键盘输入的字符作如下处理: ? 如果输入的是小写字母则转换成对应的大写字母并显示在屏幕上; ? 如果输入的是大写字母则转换成对应的小写字母并显示在屏幕上; ? 如果输入的是键盘上的Esc键则退出程序执行; ? 按其它任意可显示键,则不作处理,直接显示输出。 实验步骤 1、

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com