您好,欢迎来到爱go旅游网。
搜索
您的当前位置:首页微机原理与汇编语言_实验2_分支程序设计

微机原理与汇编语言_实验2_分支程序设计

来源:爱go旅游网
微机原理与汇编语言 实

姓 名 课程名称 实验名称 xxx 学 号 验

xxxxxx 报告

专业班级 实验日期 成 绩 计科x班 2014.10.11 微机原理与汇编语言 分支程序设计 一、实验目的 1、 掌握分支程序的设计方法。 2、 掌握宏定义及宏调用的基本方法。 3、 了解小写和大写字母的ASCII码表示及其转换方法。了解数字及其它字符在的ASCII码表示方法。 4、进一步掌握调试工具的使用方法 二、实验内容 1、实验原理 从键盘输入一字符,判断该字符是小写字母、大写字母、数字或其它字符。若输入为小写字母,显示“You Input a Lowercase Letter!”;若输入为大写字母,显示“You Input a Uppercase Letter!”; 若输入为数字,显示“You Input a Digit!”; 若输入为其它字符,显示“You Input Other Letter!”。 1.1编程指导 数字09的ASCII码为30H39H;大写字母的ASCII码为41H5AH,小写字母的ASCII码为61H7AH。本题目将字符分为小写字母、大写字母、数字及其它字符,根据键入字符的ASCII码值判断其所属类型,并显示相应的信息。字符串显示使用功能号为09H的DOS功能调用,接收键盘输入的单个字符使用功能号为01H的DOS功能调用。 1.2程序源码 ; multi-segment executable file template. .model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段 .data ;定义数据段 INFOR1 DB 0AH,0DH,\"Please Press Any Key to input a letter:$\" INFOR2 DB 0AH,0DH,\"You Input a Lowercase Letter!$\" INFOR3 DB 0AH,0DH,\"You Input a Uppercase Letter!$\" INFOR4 DB 0AH,0DH,\"You Input a Digit!$\" INFOR5 DB 0AH,0DH,\"You Input Other Letter!$\" .code start: mov ax, @data mov ds, ax ;显示信息“Please Press Any Key to input a letter”的指令 ;接收从键盘输入一个字符的指令序列 mov dx, OFFSET INFOR1 mov ah, 09h int 21h mov ah, 01h int 21h 1

cmp al, '0' jb OTHER cmp al, '9' jbe DIGIT cmp al, 'A' jb OTHER cmp al, 'Z' jbe UPPER cmp al, 'a' jb OTHER cmp al, 'z' jbe LOWER ;显示“You Input a Lowercase Letter!”的指令序列 LOWER: mov dx, OFFSET INFOR2 mov ah, 09h int 21h jmp PEND ;显示“You Input a Uppercase Letter”的指令序列 UPPER: mov dx, OFFSET INFOR3 mov ah, 09h int 21h jmp PEND ;显示“You Input a Digit!”的指令序列 DIGIT: mov dx, OFFSET INFOR4 mov ah, 09h int 21h jmp PEND ;显示“You Input Other Letter!”的指令序列 OTHER: mov dx, OFFSET INFOR5 mov ah, 09h int 21h ; PEND: mov ah, 4ch int 21h end start 1.3流程图及程序框图(见图) 2

开始 显示提示信息“Please Press Any Key to input a letter” 及功能号为1的接收键盘输入单个字符的指令序列 Y (AL)<’0’ Y (AL)<=’9’ Y (AL)<’A’ 输入的是数字,显示关信息 Y (AL)<=’Z’ Y 输入的是大写字母,显示信息 Y (AL)<’a’ (AL)<=’z’ 输入的是小写字母,显示信息 输入的是其它字符,显示信息 结束 2、实验过程 2.1.编辑 在EDIT或记事本程序下编辑源程序,以 .asm作扩展名保存文件。 2.2.汇编源程序 在DOS下,用汇编程序对源程序进行汇编,汇编后,产生·OBJ文件。其方法: C:\\ ml /c原文件名 2.3.连接 将·OBJ文件转换成·EXE可执行文件。其方法: C:\\LINK 文件名.OBJ 3、实验结果 程序正常执行,结果见截图 3

3.1 3.2 4

3.3 三、实验习题 1.实验流程图 1) 5

2.实验源码 1)习题1 ; multi-segment executable file template. .model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段 .data ;定义数据段 info1 db 0ah, 0dh, 'Are you really want to exit?$' info2 db 0ah, 0dh, 'Thank you for your using!$' info3 db 0ah, 0dh, 'Let’,96,’s continue!$' info4 db 0ah, 0dh, 'You press an error key!$' .code start: mov ax, @data mov ds, ax mov dx, OFFSET info1 mov ah, 09h int 21h mov ah, 01h int 21h cmp al, 'Y' je exit cmp al, 'y' je exit cmp al, 'N' je continue cmp al, 'n' je continue jmp error exit: mov dx, offset info2 mov ah, 09h int 21h jmp pend continue: mov dx, offset info3 mov ah, 09h int 21h jmp pend error: mov dx, offset info4 mov ah, 09h int 21h 6

pend: mov ax, 4c00h ; exit to operating system. int 21h end start 2)习题2 ; multi-segment executable file template. .model small ;定义程序的存储模式(small表示小型模式) .stack ;定义堆栈段 .data ;定义数据段 info0 db 0ah, 0dh, '1------------------------Panda' db 0ah, 0dh, '2------------------------Cat' db 0ah, 0dh, '3------------------------Rabbit' db 0ah, 0dh, '4------------------------Pig' db 0ah, 0dh, '5------------------------EXIT' db 0ah, 0dh, '(Please choose 1,2,3,4or 5)-----$' info1 db 0ah, 0dh, 'I like panda$' info2 db 0ah, 0dh, 'I like cat$' info3 db 0ah, 0dh, 'I like rabbit$' info4 db 0ah, 0dh, 'I don’,96,’t like pig$' info5 db 0ah, 0dh, 'You press an error key!$' .code start: mov ax, @data mov ds, ax mov dx, offset info0 mov ah, 09h int 21h mov ah, 01h int 21h cmp al, '1' je panda cmp al, '2' je cat cmp al, '3' je rabbit cmp al, '4' je pig cmp al, '5' je pend jmp other 7

panda: mov dx, offset info1 mov ah, 09h int 21h jmp pend cat: mov dx, offset info2 mov ah, 09h int 21h jmp pend rabbit: mov dx, offset info3 mov ah, 09h int 21h jmp pend pig: mov dx, offset info4 mov ah, 09h int 21h jmp pend other: mov dx, offset info5 mov ah, 09h int 21h pend: mov ax, 4c00h int 21h end start 四、实验总结 1.通过本次实验我掌握了分支程序的设计方法,掌握宏定义及宏调用的基本方法,了解小写和大写字母的ASCII码表示及其转换方法,了解数字及其它字符在的ASCII码表示方法,进一步掌握调试工具的使用方法。 2.在进行补全实验框架源码的时候,输出字符时会出现乱码的现象,后来查明原因是因为在汇编中会将字符按asii码表转换为二进制数,中文的标点符号asii中没有,所以会出现乱码。所以解决这些问题的方式就是将中文的标点符号改成英文的,但是在汇编中的某些标点符号是有特殊含义的比如说单引号,是用来表示字符的,对这种情况,可以将其人工将其转换为asii表的10进制数字96即可。 3.在进行习题1和习题2的练习过程中,曾经误认为输入的就是数字,事实上程序会将从键盘中读入的数字通过asii表转换成二进制数字,所以在进行判断的时候,要与输入数的asii表对应的数值进行比对大小,而不是输入数字本身。 8

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- igat.cn 版权所有 赣ICP备2024042791号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务