微机原理与接口技术实验(学生)内容摘要:
MOV SI, OFFSET MSR。 设置 SI MOV DI, OFFSET MSD。 设置 DI MOV CX, LEN NEXT: MOV AL, [SI]。 开始传输数据 第 11 页 MOV ES:[DI], AL INC SI INC DI DEC CX JNZ NEXT PUSH ES POP DS。 将附加段寄存器的段值赋给数据段寄存器 MOV DX, OFFSET MSD MOV AH, 9 INT 21H MOV AX, 4C00H。 利用 DOS功能调用返回 DOS状态 INT 21H CODE ENDS END START 将程序主体部分的寄存器间接寻址方式改为相对寻址方式, 则 如下所示: MOV BX, 0 MOV CX, LEN NEXT: MOV AL, MSR[BX] MOV ES:MSD[BX], AL INC BX LOOP NEXT 四、实验步骤 1. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 ; 2. 使用 Compile菜单中的 Compile 和 Link对实验程序进行汇编、连接 ; 3. 使用 Rmrun 菜单中的 Run,运行程序,观察运行结果 ; 4. 使用 Rmrun 菜单中的 Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容 ; 5. 更改数据区中的数据,考察程序的正确性。 五、实验报告内容及要求 写出程序调试过程及运行情况。 第 12 页 实验三 数码转换程序实验 一、实验目的 掌握不同进制数及 编码相互转换的程序设计方法。 二、实验所用设备 PC 微机一台。 三、实验内容 计算机输入设备输入的信息一般是由 ASCII码或 BCD码表示的数据或字符, CPU用二进制数进行计算或其 它 信息处理,处理结果的输出又必须依照外设的要求变为 ASCII码、 BCD码或七段显示码等。 因此,在应用软件中,各类数制的转换和代码的转换是必不可少的。 计算机与外设间的数码转换关系如图 31所示,数码对应关系如表 31所示。 图 31 计算 机与外设间的数码转换关系 1.将 ASCII码表示的十进制数转换为二进制数 十进制数可以 表示为: Dn 10n+Dn1 10n1+„ +D0 100 =Di 10i 其中 Di代表十进制数 3„ 0。 上式可以转换为: Σ Di 10i=((„ (Dn 10+Dn1) 10)+Dn2) 10+„ +D1) 10+D0 由上式可归纳十进制数转换为二进制的方法:从十进制数的最高位 Dn开始作乘 10加次位的操作,依次类推,则可求出二进制数结第 13 页 果。 本实验要求将缓冲区中的一个五位十进制数 00012的 ASCII码转换成二进制数,并 将转换结果按位显示 在 屏幕上。 转换过程的参考流程如图 32所示。 表 31 数 码转换对应关系 2.将十进制数的 ASCII码转换为 BCD码 本实验要求将键盘输入的一个五位十进制数 54321的 ASCII码存放 入 数据区中,转换为 BCD 码后,并将转换结果按位分别显示于屏幕上。 若输入的不是十进制数的 ASCII码, 则 输出 “FF”。 提示:一字节 ASCII码取其低四位即变为 BCD码。 转换部分的实验流程参见 33。 3.将十六进制数的 ASCII码转换为十进制数 十六位二进制数的值域为 065535,最大可转换为 五位十进制数。 五位十进制数可表示为: ND=D410 4+D310 3+D210 2+D110+D 0 因此,将十六位二进制数转换为五位 ASCII码表示的十进制数,就是求 D1D4,并将它们转化为 ASCII码。 图 32 十进制 ASCII转换为 二进制数参考流 程 图 33 十进制 ASCII转换为 BCD码参考 流程 本实验要求将缓冲区中存放的 000CH的 ASCII码转换成十进制数,并将转换结果显示在屏幕上。 转换部分的实验流程参见 图 34。 4. BCD码转换为二进制码 本实验要求将四个二位十进 制数的 BCD码存放在某一内存单元中,转换出的二进制数码存入其后的内存单元中,转换结束,送屏幕显示。 转换部分的实验流程参见 35。 四、实验步骤 1. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 ; 2. 使用 Compile菜单中的 Compile和 Link对实验程序进行汇编、连接 ; 3. 使用 Rmrun 菜单中的 Run,运行程序,观察运行结果 ; 4. 使用 Rmrun 菜单中的 Debug,调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容 ; 第 15 页 5. 更改数据区中的数据,考察程序的正确性。 图 34 将十六进 制数的 ASCII码转换为十进制数参考流程 图 35 BCD码转换为二进制码 参考流程 五、实验报告内容及要求 根据流程图编写程序并调试, 写出程序调试过程及运行情况。 第 16 页 实验四 运算类程序 实验 一、实验目的 1. 掌握运算类指令编程及调试方法 ; 2. 掌握运算类指令对各状态标志位的影响及测试方法。 二、实验所用设备 1. PC 微机一台。 三、实验内容 80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表 41所示的数据类型进行算术运算。 表 41 数据类 型算术运算表 1.二进制双精度加 法运算 本实验 要求 计算 X+Y=Z ,将 结果 Z 输出 到屏幕 ,其中X=001565A0H, Y=0021B79EH。 实验利用累加器 AX,先求低十六位和,并存入低址存储单元,后求高 16位和,再存入高址存储单元。 由于低位和可能向高位有进位,因而高位字相加语句需用 ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上 CF中的 1。 在 80386以上微机中可以直接使用 32位寄存器和 32位加法指令完成本实验的功能。 2.十进制数的 BCD码减法运算 本实验要求计算 XY=Z,其中, X、 Y、 Z为 BCD码,其中X=0400H, Y=0102H。 3.乘法运算 第 17 页 本实验要求实现十进制数的乘法,被乘数和乘数均以 BCD码形式存放于内存中,被乘数为 54320H,乘数为 3H,运算结束后,将乘积在屏幕上显示。 4.用减奇数开平方运算 80x86指令系统中有乘除法指令但没有开平方指令,因此,开平方运算是通过程序来实现的。 用减奇数法可求得近似平方根,获得平方根的整数部分。 我们知道, N个自然数中的奇数之和等于 N2,即: 1+3+5=9=32 1+3+5+7=16=42 1+3+5+7+9+11+13+15=64=82 若要做 S的开方运算, 那麽就可以从 S中逐次减去自然数中的奇数 1, 3, 5, 7„,一直进行到相减数为 0或不够减下一个自然数的奇数为止,然后统计减去自然数的奇数个数,它就是 S的近似平方根。 本实验要求利用减奇法计算 0040H的开平方值,并将运算结果显示在屏幕上。 四、实验步骤 1. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 ; 2. 使用 Compile菜单中的 Compile 和 Link对实验程序进行汇编、连接 ; 3. 使用 Rmrun 菜单中的 Run,运行程序,观察运行结果 ; 4. 使用 Rmrun 菜单中的 Debug,调试程序,观察调试过程中,数 据传输指令执行后,各寄存器及数据区的内容 ; 5. 更改数据区中的数据,考察程序的正确性。 五、实验报告内容及要求 根据 实验要求 编写程序并调试,写出程序调试过程及运行情况。 第 18 页 实验五 分支程序设计 实验 一、实验目的 1. 掌握分支程序的设计方法。 二、实验所用设备 1. PC 微机一台。 三、实验内容 程序有顺序、循环、分支和子程序四种结构形式,分支结构的示意图如图 51所示。 本实验要求通过求无符号字节序列中的最大值和最小值来反映分支程序的结构形式。 图 51 分支结构示意图 实验可以使用 BH, BL作为暂存现 行的最大值和最小值,且在程序的初始,将 BH和 BL初始化为首字节的内容,然后进入循环操作。 在循环操作中,依次从字节序列中逐个取出一个字节的内容与BH, BL进行比较,若取出的字节内容比 BH的内容大或比 BL中的内容小,则修改之。 当循环结束操作时,将 BH, BL分别送屏幕显示。 参考实验流程如图 52所示。 四、实验步骤 1. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 , 提供 8 字节的数据: 0D9H, 07H, 8BH, 0C5H, 0EBH, 04H, 9DH,第 19 页 0F9H; 2. 使用 Compile菜单中的 Compile 和 Link对实验程序进行汇编、连接 ; 3. 使用 Rmrun 菜单中的 Run,运行程序,观察运行结果 ; 4. 更改数据区中的数据,考察程序的正确性。 五、实验报告内容及要求 根据 实验要求 编写程序并调试,写出程序调试过程及运行情况。 图 52 分支程序实验流程图 第 20 页 实验六 循环程序设计 实验 一、实验目的 1. 掌握 循环程序的设计方法。 二、实验所用设备 1. PC 微机一台。 三、实验内容 本实验要求通过求某数据区内负数的个数来表现循环程序的结构形式。 要求实验程序在数据区中存放一组数据,为统计负数的个数,逐个判断区内的数据,然 后将所有数据中凡是符号位为 1的数据的个数累加起来,即得到区内所包含负数的个数。 循环程序的结构示意如图 61所示。 图 61 循 环结构 示意 图 四、实验步骤 1. 运行 Tddebug 软件,选择 Edit 菜单编写实验程序 , 提供 10字节的数据: 12H, 88H, 82H, 89H, 33H, 90H, 01H, 10H,0BDH, 01H; 第 21 页 2. 使用 Compile菜单中的 Compile 和 Link对实验程序进行汇编、连接 ; 3. 使用 Rmrun 菜单中的 Run,运行程序,观察运行结果 ; 4. 更改数据区中的数据,考察程序的正确性。 五、实 验报告内容及要求 根据 实验要求 编写程序并调试,写出程序调试过程及运行情况。 第 22 页 实验七 子程序设计 实验 * 一、实验目的 1. 掌握子程序的定义调用方法 ; 2. 掌握系统功能调用程序的使用和编写方法。 二、实验所用设备 1. PC 微机一台。 三、实验内容 在汇编程序设计中,用户通常会将常用的具有特定功能的程序段编制成子程序使用。 一般过程定义伪操作的格式如下: procedure name PROC Attribute „ procedure name ENDP 其中 Attribute 是指类型属性,可以是 NEAR或 FAR,调用程序和过程在同一个代码段中使用 NEAR属性,不在同一个代码段中,使用 FAR。 1. 数据移动实验 本实验要求将指定数据区的数据搬移到另一个数据区,并通过子程序调用的方法将搬移的数据显示在屏幕上。 图 71 源数据块和目标数据块在存储器中的位置示意 源数据块和目标数据块在存储中的位置可能有三种情况,如图第 23 页 71所示。 对于两个数据块分离的情况,数据的传送从数据块的首地址开始,或者从数据块的末地址开始均可。 但对于有部分重叠的情况,则要加以分析,否则重叠部分会因搬移而遭到破坏。 所以搬移过程 可以通过以下两个方式完成:当源数据块首地址 目标块首址时,从数据块的首地址开始传送数据;当源数据块首地址 目标块首址时,从数据块的末地址开始传送数据。 2. 数码转换及显示实验 有时当系统运行或者程序运行期间在遇到某些特殊情况时,需要计算机自动执行一组专门的例行程序来进行中断处理。 这段例程称为中断子程序。 中断分为内部中断和外部中断两类。 象除法错或者程序中为了作某些处理而设置的中断指令等属于内部中断。 外部中断则主要用来处理 I/O设备与 CPU之间的通信。 在汇编语言程序设计中使用系统功能调用程序,只需要通 过MOV指令,将中断参数装到与此有关的寄存器中,然后用 INT指令调用所需中断。 如果希望中断处理程序是用户自己编写的一段程序,则需要修改对应中断的中断处理程序入口。 微机系统中可以使用 0255共 256个中断。 当 80x。微机原理与接口技术实验(学生)
相关推荐
0H+0A0H =291A0H; ( 12)在指令 MOV AX, [BP][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值 =( SS) *10H+( BP) +( SI) =15000H+10H+0A0H =150B0H。 ( 1) MOV SI, 200 ( 2) MOV CX, DATA[SI] ( 3) ADD AX, [BX+DI] ( 4) AND AX, BX (
;查表得: AL = 12H 输入输出指令( Input and Output) IN 指令: 从数据端口输入数据或从状态端口输入状态字。 OUT 指令:输出数据或命令给指定的 I/O 端口。 直接输入输出指令 格式: IN AL, PORT ; AL (PORT) IN AX, PORT ; AX (PORT+1, PORT) OUT PORT, AL ; (PORT)
D ADD 指令对 6 个状态标志均产生影响。 带进位的加法 ADC ADC 指令在形式上和功能上与 ADD 类似,只是 相加时还要包括进位标志 CF 的内容 加 1 指令 INC 格式: INC reg/mem 功能:类似于 C 语言中的 ++操作:对指定的操作数加 1 注:本指令不影响 CF 标志。 减法指令 不考虑借位的减法指令 SUB 考虑借位的减法指令 SBB 减 1指令 DEC
i mov ax,d_seg。 为确保访问到字符串 ,重新指定 DS mov ds,ax mov dx,offset msg mov ah,9h。 显示字符串 inc count1 cmp count1,18 jne lessthen1sec inc count mov count1,0 int 21h lessthen1sec: sti iret disp endp。 新的 1ch中段程序结束
1~ 2 2 点火升压至 ,热紧螺栓 1~ 2 3 压力 ~ ,煮炉及排污 8~ 10 4 升压 到 ~ , 煮炉及排污 6~ 8 5 降压到 下排污 2 6 升压到 ~ 下煮炉 3~ 5 7 低点排污 ,连续进行锅炉换水 ,直到锅炉水质达到运行标准 3~ 5 注 :根据现场的实际情况 ,点火升压至 ,热紧螺拴后 ,可采用升压到 ~ 下煮炉 12 小时。 连续进行锅炉换水