实验二 二 分支程序设计 一、实验目得: 1 、学习分支程序得设计方法 2 、熟悉在 PC 机上建立、汇编、连接、调试与运行汇编语言程序得过程 二、实验环境:
硬件环境 IBM/ PC 及其兼容机 软件环境 统 操作系统 DO S 编辑程序 EDIT 或其她编辑程序 序程编汇ﻩ 汇编程序 M ASM 、E XE 连接程序LIN K、EXE 序 调试程序 DEB UG 、EXE 三 、 实验内容:
:
1 、在屏幕上显示如下信息:
1 —-— —- -- -- -- —- —---— — ---- -- —-Panda 2— —- --— — --- —- —- ———- ----— —- —--Cat ﻩ 3-——- ---- -- ---- -- -———- -——-Ra bbit 4— — -— —-— — -— —--— — --- —- -- ——--- ---Pig 5 —— ---- -- —-- —-- —- —---— —- -- —EXI T (Plea se ch oo se 1, 2, 3,4or 5 )—- ---- 入 若输入 1, 显示“I like e p panda ”后程序结束;若输入 2, 显示“I lik e cat” ”后程序结束; 若输入 3 ,显示“I lik e rab bit t入 ”后程序结束;若输入 4, 显示“I do n’t l like pig ”后程序结束; 若输入 5 ,程序直接结束; 若输入其它字符,显示“You pr ess an error key !" 后程序结束. 1) 流程图
2 )源程序 DATA SEGMENT INFOR1 DB 0AH,0DH,”1-—-—----—-—Panda:$" INFOR2 DB 0AH,0DH,"2—-—-——--———Cat:$” INFOR3 DB 0AH,0DH,"3---—---——-—Rabbit;$” INFOR4 DB 0AH,0DH,"4---—------—pig:$" INFOR5 DB 0AH,0DH,"5--—--——--—-EXIT:$" INFOR6 DB 0AH,0DH,”(please choose 1,2,3,4 or 5——-):$" INFOR7 DB 0AH,0DH,"I like Panda:$" INFOR8 DB 0AH,0DH,"I like Cat:$" INFOR9 DB 0AH,0DH,"I like Rabbit;$" INFOR10 DB 0AH,0DH,”I like pig:$" INFOR11 DB 0AH,0DH,”you press an error key!:$” DATA ENDS ;数据段结束 CODE SEGMENT ;代码段开始 Y Y Y Y N N N N N 开始 选项 用户输入 Al=1 Al=2 Al=3 Al=4 Al=5 You press an error key 结束 I like panda I like cat I like rabbit I like do not
ASSUME CS:CODE,DS:DATA ;段寻址 START: MOV AX,DATA ;将 data 得数据存入ax 中 MOV DS,AX ;为 ds 赋值 MOV DX,OFFSET INFOR1 ;返回变量 INFOR1 段内偏移地址【运行后在屏幕上显示字符 1--——--—--—-Panda:】 MOV AH,09H INT 21H ;执行九号功能调用 MOV DX,OFFSET INFOR2 MOV AH,09H INT 21H MOV DX,OFFSET INFOR3 MOV AH,09H INT 21H MOV DX,OFFSET INFOR4 MOV AH,09H INT 21H MOV DX,OFFSET INFOR5 ;返回变量 INFOR5 段内偏移地址【运行后在屏幕上显示字符 5—-—--——----EXIT:】 MOV AH,09H INT 21H MOV DX,OFFSET INFOR6 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 Panda:
MOV DX,OFFSET INFOR7 MOV AH,09H INT 21H JMP PEND Cat:
8ROFNI TESFFO,XD VOMﻩ H90,HA VOMﻩ H12 TNIﻩ JMP PEND Rabbit:
MOV DX,OFFSET INFOR9 MOV AH,09H H12 TNIﻩ JMP PEND Pig: MOV DX,OFFSET INFOR10 H90,HA VOMﻩ INT 21H JMP PEND Other:
MOV DX,OFFSET INFOR11 MOV AH,09H H12 TNIﻩ JMP PEND PEND:
MOV AH,4CH INT 21H CODE ENDS END START
2、 、 从键盘输入一字符,判断该字符就是小写字母、大写字母、数字或其它字符.若输入为小写字母, 显示“Y You I nput a Lo wer case Letter !”;若输入为大写字母, 显示“You Inp ut a Uppercase L et ter !”; 若输入为数字,显示“Yo ou Input a Digit !"; 若输入为其它字符,显示“You Inpu t Ot her Let tt er !”。
1 、 编程指导 字 数字 0 9得ASC II 码为30H 39H; 大写字母得 ASCII 码为 4 1H 5AH,小写字母得AS CI I码为61H 7AH 。本题目将字符分为小写字母、大写字母、数字及其它字符,得 根据键入字符得 AS CII 码值判断其所属类型, 并显示相应得信息 息. 字符串显示使用功能号为 09H 得 得 DOS 功能调用, 接收键盘输入得单个字符使为 用功能号为 01H 得 得 DOS 功能调用。
2、 流程图及程序框图 1)流程图 2)源程序 DATA SEGMENT 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! $” DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ; 显示信息“Please Press Any Key to input a letter"得指令序列以及接收从键盘输入一个字符得指令序列 MOV DS,AX MOV DX,OFFSET INFOR1 H90,HA VOMﻩ INT 21H MOV AH,01H INT 21H Y Y Y Y Y Y 显示提示信息“Please Press Any Key to input a letter” 及功能号为 1 得接收键盘输入单个字符得指令序列 开始 结束(AL)<’0’ (AL)<=’9’ (AL)<’A’ (AL)<=’Z’ (AL)<’a’ (AL)<=’z’ 输入得就是小写字母,显示信息 输入得就是大写字母,显示信息 输入得就是数字,显示有关信息 输入得就是其它字符,显示信息
CMP AL,’0’ JB OTHER CMP AL,’9’ JBE DIGIT CMP AL,’A" REHTO BJﻩ "Z',LA PMCﻩ REPPU EBJﻩ CMP AL,’a’ JB OTHER "z',LA PMCﻩ JBE LOWER JMP PEND LOWER:
;显示“You Input a Lowercase Letter!”得指令序列 MOV DX,OFFSET INFOR2 H90,HA VOMﻩ INT 21H 出跳序程使应后支分个一完行执意注; DNEP PMJﻩUPPER:
; 显示“You Input a Uppercase Letter”得指令序列 MOV DX,OFFSET INFOR3 H90,HA VOMﻩ H12 TNIﻩ DNEP PMJﻩDIGIT:
; 显示“You Input a Digit!"得指令序列 MOV DX,OFFSET INFOR4 H90,HA VOMﻩ INT 21H JMP PEND OTHER: ; 显示“You Input Other Letter!”得指令序列 5ROFNI TESFFO,XD VOMﻩ MOV AH,09H H12 TNIﻩPEND: MOV AH,4CH H12 TNIﻩCODE ENDS END START
四、 心得 通过这次上机实验, 我掌握了分支程序额设计方法, 宏定义及宏调用得基本方法,了解了小写字母与大写字母得ASCII 码表示及其转换方法,了解了数字及其她得 字符得 AS CII 码表示方法, 进一步掌握了调试工具得 使用方法。