微机原理与接口技术试验指导书内容摘要:

存入 5 位十进制数的 ASCll 码,即 E3500(回车) ,并输入 33 3 3 35; ③ G=2020(回车) ,运行以上程序; 15 ④ D350A,显示结果为: 0000: 350A 0l 02 03 04 05 CC ⑤ 反复试几组数,考查程序的正确性。 3.将十六位二进制数转换为 ASCII 码表示的十进制数 十进制 数的值域为 0~ 65535,最大可转换为 5 位十进制数。 算法: 5 位十进制数可表示为 ND=D4 104+D3 103+D2 102+D1 101+D0 D:表示十进制数 0~ 9。 因此,将 十 六位二进制数转换为 5位 ASCII 码表示的十进制数,就是求 D1~ D4, 将它 化为 ASCII 码。 程序流程图及 参考程序如图 14 所示 ,设源数据存于 3500H~ 3510H 单元 中,结果数存于 3510H~ 3514H 单元中。 地址 助记符 注释 2020 MOV DX, W[3500]; 取 二 进制数 2020 MOV SI, 3515 ; 目标首址在 3510H 2020 DEC SI 2020 MOV AX, DX 200A MOV DX, 0000 200D MOV CX, 000A 2020 DIV CX ; 除 lO 2020 XCHG AX, DX 2020 ADD AL, 30 2020 MOV B[SI], AL 2017 CMP DX, 0000 201A JNE 2020 201C CMP SI, 3510 ; 填余下高位为 0 对 2020 JE 2029 ; 应的 ASCII 码 2022 DEC SI 2023 MOV AL, 30 2025 MOV B[SI], AL 2027 JMP 201C 2029 INT 图 14 16 实验步骤 : ① 输入程序并检查无误; ② 在 3500H~ 3510H 单元存放 OC00,运行程序并检查结果,应看到 3510H~ 3514H 单元中的数依次为 30 30 30 31 32; ③ 反复试几组数,并运行程序, 观察结果。 4.十六进制数转 换为 ASCII 码 设经过 CPU 处理后的十 六进制数存放在起始地址为 3500H 的内存单元中,把它们转换成ASCII 码之后, 再分别存入起始地址为 350AH 的内存单元中。 从表 11中可知十六进制数 加 30H即可 得到 0H~ 9H的 ASCII码,而要得到 AH~ FH的 ASCII码,则需再加 7H。 程序流程图及参考程序如图 15 所示。 地址 助记符 注释 2020 MOV CX,0004 2020 MOV DI,3500 2020 MOV DX,W[DI] 2020 MOV AX,DX 200A AND AX,000F ;取低四位值 200D CMP AL,0A ;判是否 0~ 9 200F JB 2020 ;是 O~ 9 转 2020 2020 ADD AL,07 ; 是 A~ F 加 7 2020 ADD AL,30 ; 转换为 ASCII 码 2020 MOV B[DI+0A],AL 2018 INC DI 2019 PUSH CX ; 保护循环计数器内容 201A MOV CL, 04 ; 移 位次数送 CL 201C SHR DX, CL 201E POP CX 201F LOOP 2020 2021 INT 图 15 实验步骤 : ① 输入程序并检查无误; ② 在 3500H~ 3510H 单元中存入 4 位 十 六进制数 203B,即: 17 E3500(回车) ,并输入 3B、 20; ③ D=2020(回车),运行以上程序; ④ D350A(回车) ,显示结果为: 0000: 350A 42 33 30 32 CC„. 输入 数与结果 ASCII 码对应顺序相反; ⑤ 反复试几组数,考查程序的正确性。 5. BCD 码转换为二进制码 设四个二位十 进制数的 BCD 码存放在起始地址为 3500H 的单元中,转换出的二进制数码存入起址为 3510H 的内存单元中,程序流程图及参考程序如图 l6 所示 : 地址 助记符 注释 2020 MOV CX, 0004 2020 MOV DI, 3500 2020 MOV AL, B[DI] 2020 ADD AL, AL ; 乘 2 200A MOV BL, AL 200C ADD AL, AL ;乘 2 200E ADD AL, AL ; 乘 2 2020 ADD AL, BL ; 乘 10 201 INC DI 2020 MOV AH, 00 2020 ADD AL, B[DI} ; BCD 码十位与个位加 2017 MOV W[DI+0F], AX ;存结果 201A INC DI 201B LOOP 2020 201D INT 图 116 实验步骤 : ① 输入程序并检查无误; ② 在 3500H~ 3507H 单元中存入四个十进制数 (12, 34, 56, 78)的 BCD 码,即: 18 E3500(回车) ,输入 01, 02, 03, 04, 05, 06, 07, 08; ③ G=2020(回车 ),运行以上程序; ④ D3510(回车) ,显示结果为 35lO OC 00 22 00 38 00 4E 00; ⑤ 反复试几组数,考查程序的正确性。 四、思考题 ① 图 12 程序,将一个五位十进制数转换为二进制数 (十六位 )时,这个十进制数最 小可为多少 ?最大可为多少 ?为什么 ? ② 将一个十六位二进制数转换为 ASCII 码十进制数时, 如何 确定 D 的值 ? ③ 在十六进制数转换为 ASCII 码时,存转换结果后,为什么要把 DX 向右移四次 ? ④ 自编 ASCII 码 → 十六进制、十进制小数 → 二进制、十进制 → BCD 码的程序 , 并调试运行。 19 实验二 运算类程序设计实验 一、实验目的 ① 掌握使用运算类指令编程及调试的方法; ② 掌握运算类指令对状态标志位的影响及其测试方法。 二 、实验设备 DICE8086B 实验系统 一 台 三、实验内容及步骤 8086/8088 指令系统提供了实 现加、减、乘、除运算的基本 指令,可对表 21 所 示的数据类型进行算术运 算。 (一 )加减运算 1.二进制双精度加法运算 计算 X+Y=Z,将结果 Z 存入某存贮单元。 本 实验参考程序及存贮单元分配如图 21 所示。 地址 助记符 注释 2020 MOV AX, W[3500] ; X 低位送 AX 2020 ADD AX, W[35041 ; X 低位加 Y 低位 2020 MOV W[3508],AX ; 存低位和 200A MOV AX, W[3502] ; X 高位送 AX 200D ADC AX, W[3506] ; X 高位加 Y 高位 2020 MOV W[350Al, AX ; 存高位和 2020 INT 图 21 本实验程序是双精度 (2 个 16 位,即 32 位 )运算,利用累加器 AX,先求低 16 位 和,并存入低地址存贮单元,后求高 16 位 和,再存入高地址单元。 由于低位和可能向高位有进位,因 20 而高位字相加语句须用 ADC 指令,则低位相加有进位时 CF=1,高位字相加时,同时加上 CF中的 1。 实 验步骤 : ① 输入实验程序并检查无误; ② 按存放单元分配图 (图 21)在 3500H~ 3507H 单元中存入二进制数 001565A0 和 0021B79E; ③ G=2020(回车 ),运行以上程序 ; ④ D3508(回车) ,显示计算结果: 3508 3E 1D 37 00 C7 „ ; ⑤ 反复试几组数,考查 程序的正确性。 2.十进制数的 BCD 码相减运算 计算 XY=Z,其中 X、 Y、 Z 为 BCD 码。 本实验程序流程图、参考程序及存贮单元分配如图 22 所示。 地址 助记符 2020 MOV AH, 00 2020 SAHF 2020 MOV CX, 0002 2020 MOV SI, 3500 2020 MOV DI, 3510 200C MOV AL, B[SI] 200E SBB AL, B[SI+02] 2020 DAS 2020 PUSHF 2020 AND AL, OF 2020 POPF 2020 MOV B[DI],AL 2018 INC DI 2019 INC SI 201A LOOP 200C 201C INT 21 实验步骤 : ① 输入实验程序并检 查 无误; ② E3500(回车) ,在 3500H~ 3503H 单元中存入 40 和 12 的 BCD码: 00、 0 0 01 ③ G=2020(回车) ,运行以上程序; ④ D35lO(回车) ,显示计算结果: 3510 08 02 CC„; ⑤ 反复试几组数,考查程序的正确性。 (二)乘除运算 1.考察乘法指令 MUL、 IMUL 对状态标志位的影响 乘法指令 MUL、 IMUL 对状态标志 CF、 OF 都是通过指令执行后最 高位上产生进 (借 )位、 出来影响的。 图 23 我们具体给出了一个实验程序的流程图及参考程序,其设计思想是: 取 3000H 单元开始的 10 个无符号数,将其各自乘以 2,若有溢出,显示“ O” ,有进位显示“ C”,否则,只显示 间隔符“,”,我们规定每一数相应的标志显示之间均用“,”来间隔 .于是,我们就可以在数据区放各种试验数来考查乘法对标志的影响。 地址 助记符 注释 2020 MOV SI, 3000 ; 源数据首址 2020 MOV CX, 000A ;数据个数 2020 MOV BX , 0002 2020 MOV AX, W[SI] ;取数 200B CLC 200C IMUL BX ; 乘 2 200E JO 201E ; 溢出转 2020 JB 2022 2020 MOV AL, 2C ; 显示“,” 2020 INC SI 2020 INC SI 2020 MOV AH, 01 ;显示功能调用 2018 INT 10 201A LOOP 2020 ; 完否 201C JMP 201C ; 停机 201E MOV AL, 4F ; 显示” O” 2020 JMP 2020 2022 MOV AL, 43 ; 显示“ C” 2024 JMP 2020 2026 INT 图 23 22 实验步骤 : ① 输入实验程序并检查无误; ② 准备 10 个数存放到 3000H~ 3009H 单元中。 运行程序,观察显示结果并认真分。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。