内容发布更新时间 : 2024/11/17 6:30:26星期一 下面是文章的全部内容请认真阅读。
2. 实验设备
微型计算机、emu8086
3. 实验原理
分支程序是根据不同条件执行不同处理过程的程序。分支程序的结构有两种:—种是二路分支,—种是多路分支。它们的共同特点是在满足某一条件时,将执行多个分支中的某—分支。
本节的实验内容与数值和ASCII码间的转换有关,由于字符′0′~′9′的ASCII码是30H~39H,因此将数值0~9转换成对应的ASCII码时,需要在其基础上加30H;由于字符′A′~′F′的ASCII码是41H~46H,因此将数值A~F转换成对应的ASCII码时,需要在其基础上加37H。另外,二进制数与十六进制数之间的关系是:每4位二进制数等于1位十六进制数。
在屏幕上显示单个字符的语句如下: MOV DL,<要显示的字符> MOV AH,2 INT 21H
4. 实验内容
从键盘输入一个十进制正整数N(10≥N≥99),将其转换成十六进制数,转换的结果显示在屏幕上。提示:键盘输入的内容都是ASCII码形式。
程序流程图如错误!未找到引用源。。
开始 从键盘输入一个两位的十进制数放入 STR开始的键盘缓冲区中 第一步:将ASCII码形式的两位十进制数转换成二进制数 1.(STR+2)-30H→AH(将十位数的ASCII码转换成BCD数) 2.(STR+3)-30H→AL(将个位数的ASCII码转换成BCD数) *10+AL→AL(转换成二进制数保存在AL中) 第二步:将二进制数转换成十六进制数 AL中的高4位和低4位分别就是十六进制数的高位和低位 第三步:显示结果的高4位 4位取AL的高 N数据≥A? Y 7是A-F,预加 加30H,转换成ASCII码显示到屏幕上
图 2-4程序流程图
程序框架如下: data segment
STR db 3,0,3 dup(0)
MES db 'Input a decimal number(10~99):$'
MES1 db 0ah,0dh,’Show decimal number as hex:$' pkey db \ ends
code segment start:
; set segment registers: mov ax, data mov ds, ax mov es, ax
;显示字符串Input a decimal number(10~99): ;从键盘输入一个两位的十进制数
;将表示十位数的字符转换成数值,保存到ah中 ;将表示个位数的字符转换成数值,保存到al中 mov bl, al
;将ah和al表示的两位十进制数转换成十六进制数,保存到al中 mov bl, al
;显示字符串Show decimal number as hex: ;显示结果的高4位 ;显示结果的低4位 lea dx, pkey mov ah, 9
int 21h ; output string at ds:dx ; wait for any key.... mov ah, 1 int 21h
mov ax, 4c00h ; exit to operating system. int 21h ends
end start ; set entry point and stop the assembler. 编写EXE TEMPLATE程序,观察执行结果。
5. 实验习题
1)如果输入的数在0~99范围内,如何修改程序才能使结果正确。 2)如果可以输入负整数,如何修改程序才能使结果正确。
6. 实验报告要求
1)写出完整的程序。
2)使用不同数据测试程序并解释运行结果。
1.2.8 循环程序
1. 实验目的
1)了解8086汇编程序的基本结构 2)掌握循环程序的基本设计方法。
2. 实验设备
微型计算机、emu8086
3. 实验原理
循环程序是把一个程序段重复执行多次的程序结构。循环程序包括三个部分:初始化部分、循环体、循环控制部分。初始化部分用于对循环程序的参数(循环次数、控制条件、指针等)设置初值。循环体是要被重复执行的程序段。循环控制部分用于决定是否退出循环。循环控制指令可以是转移指令或LOOP指令。当已知循环次数或控制条件为ZF时,用LOOP指令控制循环是最简单的方法。
本节实验显示的图形可以分为上下两部分。对于上半部分图形,需要设置两层循环,其
中外循环控制显示几行(初始为9,每次减1,减到0时结束);内循环控制当前行显示几个′*′(初值为1,每次加1)。对于下半部分图形,也需要设置两层循环,其中外循环控制显示几行(初始为9,每次减1,减到0时结束);内循环控制当前行显示几个空格(初值为8,每次减1)和几个′*′(初值为1,每次加1)。
在屏幕上显示单个字符的语句如下: MOV DL,<要显示的字符> MOV AH,2 INT 21H
4. 实验内容
在屏幕上显示如下图形。 * ** *** **** ***** ****** ******* ******** ********* * ** *** **** ***** ****** ******* ******** *********
程序的流程图如错误!未找到引用源。所示。
cl=0? Y 显示′*′ cl=cl-1 第一步:处理上半部分图形 外循环计数器bl=9,每行星号个数bh=1 开始 cl=bh
N
bl=0? N 显示回车,显示换行 bh=bh+1 bl=bl-1
bl=0? N ch=ch-1 bh=bh+1 bl=bl-1 cl=0? N Y cl=bh N cl=0? 显示空格 cl=cl-1 cl=ch 第二步:处理下半部分图形 外循环计数器 bl=9,每行空格个数 ch=8,每行星号个数 bh=1 Y 显示′*′ cl=cl-1 Y 显示回车,显示换行
Y 结束 图 2-5程序流程图
程序的框架如下:
data segment
pkey db \ ends
code segment