全球旧事资料 分类
华北电力大学
科技学院




课程名称微机原理实验
指导老师郭
学生姓名
班级电气11k6
学号
f实验一数据转换实验
一、实验目的
1初步掌握在PC机上建立、汇编、链接和运行808688汇编语言程序的过程。
2通过对两个验证性试验的阅读、调试、掌握不同进制数及编码相互转换的程序设计方法。
3完成程序设计题加深对数码转换的理解了解简单程序设计方法。
二、实验内容
1十六进制数转换为ASCII码
设二字节十六进制数存放于其实地址为3500H的内存单元中把他们转换成ASCII码后再分别存入起始地址为350A的四个内存单元中。从书上ASCII码表中可知十六进制数加30H即可得到0H9H的ASCII码而要得到AHFH的ASCII码则需再加7H。
请根据所给流程图理清思路总结出对应的若干要点。将流程图与参考程序相互。根据分析的结果将运行时内存的变化列写出来。
学习并使用MASM或WAVE仿真软件分析程序运行过程中相关寄存器及相应内存的变化情况来验证自己的猜想以巩固命令的学习提高编程能力。
f图111
fDATASSEGMENT
此处输入数据段代码
DATASENDS
STACKSSEGMENT
此处输入堆栈段代码
STACKSENDS
CODESSEGMENT
ASSUMECSCODESDSDATASSSSTACKS
START
MOVAXDATAS
MOVDSAX
此处输入代码段代码
MOVCX0004H根据转换个数设定循环次数
两字节十六进制数如6B2C对应有四个用十六进制表示的ASCII码表示即四个字节
MOVDI3500H指向该两字节十六进制数起始地址此时在调试窗口修改内存字节
MOVDXDI将地址3500H中的内容6B2C给DX
A1MOVAXDX第一次时DX6B2C
因为想顺序取C、2、6、B所以需要一个中间变量ANDAX000FH取低四位第一次取到C
CMPAL0AH判断AL属于09还是AF
JBA2如果是09则跳转到A2
ADDAL07H若属于AF再加上07H后也是再加上30H即得到转换。
A2ADDAL30H09的ASCII码对应的十六进制比其
本身注意亦是十六进制大30H
MOVDI0AHAL将转码后的C即43H给350A
INCDI将DI指向下一字节用于存储转码后的值第一次自增后要存‘2’
PUSHCX功能是接下来要用到CX作为一个中间变量
而刚才已经使用并且接下来还会用到CX的值
也可以不用CX用其他不用的寄存器或者直接立即数形式的。
MOVCL04H若直接用立即数可能不稳定原因不详用一个中间变量。
fSHRDXCL右移四位如第一次转码后DX6B2C
为下一次取低四位的2做好前提将0010b移到低四位POPCX执行完后CX又用于计数
LOOPA1每一次转码后执行完此句后CX的值都要变化
分别是3210正好四次。
MOVAH4CH
INT21H
CODESENDS
ENDSTART
13实验过程与心得
131编程要点
1数据在内存空间中的存储情况要清晰
图112图113
如上图所示图12为处r
好听全球资料 返回顶部