第2章机器语言程序的建立与执行

上传人:人*** 文档编号:568403831 上传时间:2024-07-24 格式:PPT 页数:102 大小:263KB
返回 下载 相关 举报
第2章机器语言程序的建立与执行_第1页
第1页 / 共102页
第2章机器语言程序的建立与执行_第2页
第2页 / 共102页
第2章机器语言程序的建立与执行_第3页
第3页 / 共102页
第2章机器语言程序的建立与执行_第4页
第4页 / 共102页
第2章机器语言程序的建立与执行_第5页
第5页 / 共102页
点击查看更多>>
资源描述

《第2章机器语言程序的建立与执行》由会员分享,可在线阅读,更多相关《第2章机器语言程序的建立与执行(102页珍藏版)》请在金锄头文库上搜索。

1、第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 第第2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.1 机器语言程序机器语言程序 2.2 实际地址值的确定实际地址值的确定 2.3 DEBUG的特殊性质及应用的特殊性质及应用 2.4 机器语言程序的建立与调试机器语言程序的建立与调试 旅接朴马屯助咬幽弄狐邓剩翟狰爽当列卒妥巫锨妹墙企飞磷骄息司竣怯蹿第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.1 机器语言程序机器语言程序本节介绍两个程序范例,第一个程序范例是将指令所定义的“立即型”数

2、据传送入寄存器内,然后进行算术运算,第二个程序范例是使用单独定义的方法将数据定义在数据段中。经过追踪这些指令的执行,你可以深入了解微型计算机的动作状态以及各寄存器所扮演的角色。诫拿抄声结蜂纸溜拽秃苏循帖彩风追俭彪写夕闲罐掸财艺毖叙贞置森巢巫第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.1.1 启动DOSDEBUG程序是在DOS环境下工作的软件。若计算机同时装有两个操作系统(Windows系统和DOS系统),当系统在Windows环境下工作时,用鼠标左键单击“开始”按钮,在弹出的主菜单中单击“关闭系统”项,弹出“

3、关闭Windows”菜单,选择其中的“重新启动计算机并切换到MS-DOS”项并回答“是”,即可启动DOS。所扩恨遍贿卤急拜赃欺掏撂崭咽妻字瓦植墅吹藕弓捐麻峻盖拳业铭担胸杠第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 若计算机仅装有Windows操作系统,开机时,首先将DOS系统磁盘插入A驱动器,若此时电源关闭,则将电源接通;若电源已经启动,可同时按下Ctrl、Alt与Del键,以热启动方式启动计算机,即可用A盘启动DOS。蓑凛疙柞怕呈菇巢惜仓磷字湘蒜歇砾操滦柬圃昂液鄙撞饮规妮斧语彝醇凳第2章机器语言程序的建立与执行

4、第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.1.2 检查存储器内容的方法第一个练习是,使用DOSDEBUG程序检查存储器被选择地址单元的内容。键入DEBUG然后回车,即可启动DEBUG程序。此时系统会将DEBUG程序从磁盘装入到内存储器,并且执行。之后,屏幕会出现DEBUG的提示符(-)。此提示符表示DEBUG等待接受用户的命令(DEBUG命令)。此练习只用到D命令,它的功能是显示存储器单元的内容。寨枯沿饮难漂啼泼蜗疡疫廊苛认吱零瞪俭怖交郴埂偿腊合誊禄腔望剐帜浊第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机

5、器语言程序的建立与执行机器语言程序的建立与执行 1. 存储器的容量机器的存储器容量值存放在物理地址是十六进制00413与00414的存储单元中。在DEBUG环境下,你可以观察此地址处的内容,它是以段的起始地址与偏移地址配合的方法来查看的。例如:(1)十六进制00400是段起始位置的地址,而你只能键入0040,因为最后一位数字已假设为0。绸昂泪忌翟沃寥搅仗竿侩柜眩旦仇煎混远杯巫坊明泞铱甚菩兑步劝撩诺浇第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 (2)13是相对于段起始位置的偏移地址(差距值)。因此,只要键入下列字符

6、串就可看到本机存储器的容量:D0040:13并按下Enter键在屏幕上所表示的前两个字节就是存储器的容量,此十六进制数值是以字节反向的顺序出现的,且其单位为K字节即KB。表2-1列举了一些可能出现的反向十六进制数(ReversedHex)、正确十六进制数,以及其等价的十进制数。梗卉莫柬溯哗伎巾讽虏豁氰唾闰伺丙毡讼偷杏擎行果坠掩锋萎叭乱吁滤唇第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 表2-1 反向十六进制、正确十六进制与十进制反向十六进制正确十六进制十进制80000080128000101002568001018

7、03840002020051280020280640壤诞娠雏昨仍哀抨攘报附缝豆贝仅箔认贼叙伞哦宛盘琅转画昆唇盗茁象扫第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2. 序列号微型计算机的序列号是存放于ROM存储器中的,其实际位置的地址为FE000。你只要键入下列字符串就可以看到它的内容:DFE00:0并按下Enter键此时,屏幕上会显示出一个7位数的数字,其后面跟着版权和日期(CopyrightDate)。姨招遁株踏劈屏衡艳付声讨抠吞腋皋绒拽碰沽迪滥沫挽郴努势流兔凑友运第2章机器语言程序的建立与执行第2章机器语言程

8、序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 3. ROM BIOS日期ROMBIOS日期是存放于位置FFFF5中的,它的表示格式为mm/dd/yy。键入:DFFFF:05并按下Enter键就可看到ROMBIOS的日期,据此你可以判断出微型计算机的机型及其机龄。注意:上述三个例子均是早期PC机的存储器容量、序列号以及ROMBIOS日期在内存中的映像。它们可能与你所使用的现代机型不符合,但它不会影响你对D命令的使用和对内存单元内容的观察。恤觉讲儿馏抄牧补寅咀泰撞辅桨线论躯期物脉簇岁季科获所道弯影撕摇佃第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第

9、第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 到目前为止,你已知道如何使用显示存储器内容的DEBUG命令,并可以正确地设定内存的任何单元的位置(地址),以观察它的内容。你也可以重复地键入D命令,可以不带参数,而逐步地观察存储单元的内容。当你想要退出DEBUG回到DOS的控制下时,只要键入Q然后回车就可以了。接下来,我们利用DEBUG来直接输入程序到内存储器中,并追踪它的执行过程。劳圃纤茫锰铆康郁锁淫中酶桂腾挡豹柳攫勿瑞距箩屹洁红区党霄谆践腕泳第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.1.3

10、 机器语言范例1立即型数据运算本范例的目的是说明如何将一个机器语言程序输入到内存储器中,以及对其执行的过程。下列机器语言程序操作是以十六进制格式进行的。机器指令码注释B82301;把0123传送入AX寄存器052500;把0025加入AX寄存器滥颂绚碉饥羌搽寇膜嚼乾辗邓姨裴聪袭和择逊疏拳尚页脏棱旁碳了狡愤价第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 89C3 ;把AX的内容传送入BX01C3 ;把AX的内容加入BX89D9 ;把BX的内容传送入CX29C1 ;把CX的内容减去AX的内容29C0 ;AX减去AX(A

11、X清0)90;没有运算(不做任何操作)90 ;但PC+1PC渊镊镊娃釜曙捻溶寝起喝指傈彼派雹漫冈佐数砧蒙郁馅雁幸此鞠垂迷雍店第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 你也许已注意到每条机器指令的长度是不一样的(有一个、两个或三个字节),而且是以一条指令跟着一条指令的格式存放在内存储器中的。程序从第一条指令开始执行,然后逐步地执行直至完成。目前可以暂时不管机器指令中的操作码所代表的意义。例如,在某种情况下MOV(传送数据)是十六进制B8,而在另一种情况下MOV则为十六进制89。厕垦千赊自酉找疽飞阮裳轧慑梨镰脆赦慷

12、暮拌帛乓乞曝欲舅式队湍域术格第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 此程序可以直接输入到存储器中,而且可以一次一条指令逐步地执行。同时在每一条指令执行后,你可以观察到诸寄存器的内容。依照前一节的方法将DEBUG程序装入内存储器中并执行,此时屏幕上会出现一个DEBUG的提示符(-)。若要输出打印这个练习程序,可先打开打印机电源,同时按下Ctrl与P键即可成功连接打印机。露曳董蚌莉瓮帜凌额盐无袄硼铆刊幢这怖翱羚帐标凄泼窄祟卞稠敢司属墓第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器

13、语言程序的建立与执行机器语言程序的建立与执行 键入下面的命令,就可以直接将机器语言程序存入内存(命令中字节与字节之间有一个空格):ECS:100B82301052500按下Enter键DEBUG的命令E代表输入,CS:100表示指令所要存入的存储单元位置指令段开始后的第100H(256)个字节,这是在DEBUG环境下的机器指令码存放的正常起始位置地址。E命令每次存入两位十六进制数字(一个字节)到存储器的存储单元内。巫呕极宛咯趴确象猾饭禄档雀次森肠噪秉祷诧筐龙疯更晚痹坦型戮师赘腹第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立

14、与执行 范例1中,它存放的地址是从CS:100到CS:105,共6个字节。下一个命令为:ECS:10689C301C389C9按下Enter键此命令可从CS:106经107、108、109、10A至10B存入6个字节。最后一个存入命令是:ECS:10C29C129C09090按下Enter键姿理疙威猜于驯别悲晚痴巨籽念叁熏刹帚酒硒长昧砍苫活帮徘妒电堰祸喀第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 此命令可从CS:10C开始经10D、10E、10F、110至111存入个字节。现在你已经存入了第一个机器语言程序。在执

15、行之前先核对输入的资料(机器指令码)是否正确,若发现错误改正过来即可。执行这些指令是很简单的。图2-1显示了所有步骤(包括命令)。屏幕上所显示出的内容将与你所键入的DEBUG命令产生的结果一样。蔫总缚幂快艇并弘远抨症堑耙勤篇杀缮衍耕雏侥铃拴精盲艇沮承剁舍汪辰第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 C:DEBUG-ECS:100B82301052500-ECS:10689C301C389D9-ECS:10C29C129C09090-RAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0

16、000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0100NVUPEIPLNZNAPONC1268:0100B82301MOVAX,0123对淋份弃敦仑球砒锻狄局校究绿计甘辑片舒诊玛蚤断越搞藕卧肇推或东设第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 -TAX=0123BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0103NVUPEIPLNZNAPONC126

17、8:0103052500ADDAX,0025-TAX=0148BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0106NVUPEIPLNZNAPENC1268:010689C3MOVBX,AX劲皇蝗呵偶仓胜荫堪黑淫绥伏抗娄事动喇肝瓣连吞媚这湃垄尧尤接嚎薄瘴第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 -TAX=0148BX=0148CX=0000DX=0000SP=FFEEBP=0000SI=0000DI

18、=0000DS=1268ES=1268SS=1268CS=1268IP=0108NVUPEIPLNZNAPENC1268:010801C3ADDBX,AX-TAX=0148BX=0290CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=010ANVUPEIPLNZACPENC1268:010A89D9MOVCX,BX摄佬慑树短舵复喉扁庭寝铆糊修灌紊犯验稚察卧遗询脯皇焕乎狱富狠浴宋第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执

19、行 -TAX=0148BX=0290CX=0290DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=010CNVUPEIPLNZACPENC1268:010C29C1SUBCX,AX-TAX=0148BX=0290CX=0148DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=010ENVUPEIPLNZACPENC1268:010E29C0SUBAX,AX替泣疚掩声互溪华厢筷壳痘掘凄啡予夷霜嵌碗轻炭蕊帆隘曳弱辰坪妊毡链第2章机器语

20、言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 -TAX=0000BX=0290CX=0148DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0110NVUPEIPLZRNAPENC1268:011090NOP-图2-1机器语言范例1的追踪灿啡帘恼兆枫损搜怂剩戚蝶荒趴确胰盒骇疏祟杉护膛蠕仟盐钠扇慷郸杀这第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 只要键入R命令再按E

21、nter键即可观察诸寄存器与标志寄存器的内容。此时,DEBUG会以十六进制的格式提示所有寄存器的内容,例如:AX=0000,BX=0000,因为DOS版本的不同,所以在屏幕上的段寄存器内容可能与图2-1所显示的结果不相同。指令指针寄存器IP=0100表示指令从指令段起始位置地址后的第100H字节开始执行,这就是为什么要求以ECS:100命令作为存入程序的起始位置地址的原因。涕敛勤银勿炕僵辊雾脱琅择羽噬熔吠劫践涨迭辊剔奥步锥活辽豢沿肩帐籍第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 图2-1中的标志寄存器显示了下列标

22、志的设定:NVUPEIPLNZNAPENC当前这些标志位的意义分别为:NV没有溢出,UP地址值的变化是增值向上(右)方向,EI中断允许,PL正号,NZ非0,NA没有辅助进位,PE奇校验,NC没有进位。述真尉致绥谎屎岩蚊旅铰蚌件沉磁彪侵转览胚击垛甸首侮自佐暇樱陵岗夯第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 R命令同时也显示出位于偏移地址0100处的第一条待执行的指令。注意,图2-1中的CS寄存器内容是CS=1268(你的机器也许不一样),且指令如下所示:1268:0100B82301MOVAX,0123(1)CS

23、=1268表示指令段的起始位置地址在1268(实际的物理地址值是12680)。1268:0100表示紧接着在CS位置地址12680后的100(十六进制)个字节的位置。(2)B82301是你输入在CS:100位置地址处的机器指令码,B8是操作码,2301是立即数。滔元诲瓷殃橙缚斡窖蔷捞休梧概澡锣黍洲言护嗽统夷凑呼零柄庸撕节匿浓第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 (3)MOVAX,0123是机器指令码的汇编语言助记符指令形式。这是“反汇编”操作的结果,“反汇编”是指将机器指令码翻译成汇编语言符号指令形式。利用

24、DEBUG能使你更容易地理解此机器指令程序。在以后的章节中,你将学习到如何使用汇编语言的符号指令独立地编写程序。目前这条汇编语言指令的意思是,把立即数0123移入AX寄存器内。角瘟精岁冈沈藤吓妻储肩射奏种羔披斑宜乳腐忿梦肌农鸣别茄呜违据冬朴第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 此时,指令MOVAX,0123尚未执行。为了执行此指令,可键入T(代表Trace)命令并按Enter键。T命令执行之后,DEBUG同时显示各寄存器、标志寄存器的内容,以及下一条待执行的指令。请注意,此刻AX的内容为0123。操作码B8

25、的功能是将紧接着的2301移入AX寄存器。此操作是把23移入AX寄存器的低字节AL,把01移入寄存器的高字节AH,即AX:|01|23|班谣土戊聋羞喊例厄郴舍鞠曰俗乐皑躇萝缎经陡儡拴钾赡眉被岳悸堤什矿第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 IP寄存器的内容是0103,它指示出指令段中下一条待执行指令的位置地址,即1268:0103052500ADDAX,0025为了执行这条指令,再键入一个T命令。此条指令把25加到AX的低字节AL,而把00加到AX的高字节AH,整体而言是将0025加入AX中,此刻AX的内容为

26、0148,而IP的内容为0106。宙瓶涕羞您磁诲享蜘栅炽岔杯茧觉谬已墅摹域彭惜兑必凭闹毫细髓恢拢悔第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 再键入一个T命令,指令会把AX的内容移入BX寄存器内目前BX的内容为0148。因为MOV操作只是将数据从一个位置拷贝到另一个位置,所以AX的内容仍然是0148。逐步地键入T命令,可以执行其余的指令。下一条指令是将AX的内容加至BX中,使得BX的内容变成0290。然后把BX的内容移入CX,再将CX的内容减去AX的内容,并使AX减去AX本身的内容。在AX减AX的运算之后,0标志

27、位会从NZ(非0)改变成ZR(0),以指示运算结果为0。铆蔫诧机阀煤正裳冲功况脱颓鸿炭姥谋扦盎腻罢静已姐磋缅蟹钢馈鞭朴贵第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 你可以继续键入T命令,执行最后的两条指令(NOP与NOP),但它们并无任何意义,只是使IP增值,使指令可以连续执行。若你想观看指令段中的机器语言程序,可以键入下面的显示内存命令:DCS:100按下Enter键在80列宽的屏幕中,DEBUG会在每行的左半部提示16个字节的十六进制数字。而其右半部则是ASCII表示法(即为可显示出的码)。就机器指令码而言,

28、ASCII表示法是没有意义的。在以后的章节中,对右边的显示会有更详细的讨论。庶顽口撵赶憋庞实持墅厌碳郑叁候段较鹏沃较贯慕纺彬巾掐庸丙禾下紫爬第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 图2-2列出了命令DCS:100所操作的部分结果。只要看你自己的机器指令分布,从CS:100至CS:111的机器码即可,而紧接在这些机器指令码之后的存储单元内容则是随机的。皆磨伴裂汞坍肚匙卒缮急颧林山宵腻挡宗引易睛五砌橡敬痉耀悲帐壬诞秃第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执

29、行机器语言程序的建立与执行 -DCS:1001268:0100B8230105250089C3-01C389D929C129C0.#.%.).).1268:01109090CA740B880547-41AC3C2234005712.t.GA.4.W.1268:01203C3E757038047506-AC26FE063C04E82Eup8.u.&.或C。娠曾嚣甥劲埠榨桌耻目惟隘雁六诸贩腆洞异糊菱撞磁哩窒锚谓擞需畅尼籽第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.1.4 机器语言范例2数据的定义前一范例中参与运算

30、的数是直接定义在指令中的,即MOV和ADD指令中的立即数0123H和0025H。下面将列举另外一个类似的程序例子,它在数据段内定义了两个字0123H与0025H。通过此例子的工作过程,你将能更深入地观察到微型计算机是如何借助DS寄存器与偏移地址(差距值)来存取数据的。杨钮与眉疽缨搭菜毫姿建萌奋开瘫骆耸竞哑副按投累窿梯寻桃哥经曳滥浅第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 本例子所定义的数据区如下所示:数据段地址十六进制值占用的单元DS:000023010,1DS:000225002,3DS:000400004,

31、5DS:00062A2A2A6,7,8由于一个十六进制数字占半个字节,所以本例子中的23存于数据段中的第0个单元(第1个字节),01存于第1个单元(第2个字节)。帛窟玛闰惦卢椒罢钙咖浇卑冠糟披宪捎豆硅坯秉镑勃阔到薄孜诣荡琉阴奖第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 指令段中的机器指令码,对这些数据有如下的操作功能:机器指令码注释A10000;从DS位置地址0000处开始搬移一个字到AX寄存器中03060200;把DS位置地址0002处开始的字内容加到AX寄存器中A30400;把AX寄存器的内容搬到DS位置地址

32、0004处开始的字中90;空操作90;空操作帮庙茬妓彝泵华船疙嵌臻涩饲丹坚铂神远荣蹦自敌孪芒淳丧吉垢仿缔然挡第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 你也许已经注意到有两条传送指令(MOV)具有不同的机器指令操作码A1与A3。机器指令的操作码,是依据所用到的寄存器、字节(或字)的数目、数据传送的方向,以及所用到的立即数据或存储单元等而进行编码的。你可以再次利用DEBUG输入此程序并观察其执行过程。当DEBUG发出其提示符(-)时,表示它已准备好接受你输入的DEBUG命令了。丽腿阁内铣孤森什斋政保杏绒备履毋聋痴桅

33、械校含殷去铁托疆蹬闯性压灯第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 首先利用E命令以键入数据到数据段:EDS:00230125000000并按下Enter键EDS:062A2A2A并按下Enter键哆册蕴饲券掠祝镊将良芥效析疲驾鞠季藻婉躺砚氰蛤锚江燕随胰引浴脏锄第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 第一个E命令存储了6个字节到数据段的起点处(DS:00)。注意你必须以字节反向的方式输入字操作数,使得0123是2301,而00

34、25是2500。当用一条MOV指令存取这些字到寄存器时,它再把这些字反向处理,使得2301变成0123,2500变成0025。第二个E命令输入3个星号,这些存储于数据段中的星号不提供任何作用。只是以后你用显示内存单元内容命令(D)时,提示你可以很方便地观察到它们(参见图2-4)。烈赃豹莉讳发吾舒饼叛使窘雁磷汉坑域肆助百篷港宅缮脓鸟誊桶囤芽曙娶第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 此刻,再一次从CS:100处开始把指令存入指令段中:ECS:100A1000003060200并按下Enter键ECS:107A3

35、04009090并按下Enter键现在这些指令已存于存储器中位置为CS:100到CS:10B处。你可以用范例1所使用的方法来执行这些指令。竭掉捉烯柞蛛茬俱尝辈弦蟹囱妨瘁这钩换足链磺议竖辞涵狠仙轨氧瓮词谆第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 图2-3列出了包含E命令的所有步骤。只要键入下列命令,你就可以观看存储在数据段中的数据与指令段中的指令码:查看数据段:DDS:00并按下Enter键查看指令段:DCS:100并按下Enter键把你所键入的这两段内容与图2-3比较,DS:00至08与CS:100至10B的内

36、容将与图2-3相同。盎岂篓屠秋悦圣潜离除良造治哩做筹磷闻扛詹丽阐朋峨钾怖峻忆捐渣赊沮第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 C:DEBUG-EDS:00230125000000-EDS:062A2A2A-ECS:100A1000003060200-ECS:107A304009090-RAX=0000BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0100NVUPEIPLNZNAPONC1268:01

37、00A10000MOVAX,0000DS:0000=0123通炸怀席氧茄郭花捷文早律胎败近喷扑杆炸沫婿锰懒蒙蔑升育烃认痉矾序第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 -TAX=0123BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0103NVUPEIPLNZNAPONC1268:010303060200ADDAX,0002DS:0002=0025-TAX=0148BX=0000CX=0000DX=0

38、000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268IP=0107NVUPEIPLNZNAPENC1268:0107A30400MOV0004,AXDS:0004=0000撅株皖蹈弟讫孩懊谱笛秸抑偷咽毯辙窜醋库宿伺液厘拓摸寿凹撵酌毙邹膨第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 -TAX=0148BX=0000CX=0000DX=0000SP=FFEEBP=0000SI=0000DI=0000DS=1268ES=1268SS=1268CS=1268

39、IP=010ANVUPEIPLNZNAPENC1268:010A90NOP-图2-3机器语言范例2机器指令的追踪琐榆允醉游喧套丁酶皱橇身唇渠什恕引切血摔绊桃弥称工板挽豪骇馁瑶羔第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 现在,按R键以查看寄存器与标志寄存器的内容,并显示第一条待执行指令。各寄存器的内容与范例1中的相同,所显示的指令为:1268:0100A10000MOVAX,0000CS寄存器的内容为1268,而CS:0100存放着第一条机器指令码(A10000)。DEBUG将此指令解释为MOV(传送),而且它是

40、取数据区中的第一位置0000内的数据。方括号是告诉汇编程序它是一个偏移地址(差距值),而非一个立即数。把立即数移入AX寄存器的汇编语言指令应该为:MOVAX,0000许翠斑杜气剃痊接赋污氟互谭龟迁发龋踢旅恐盂鹅澄坍妄枯关鸟纽拌滥形第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 现在键入DEBUGT命令,执行MOVAX,0000指令会将数据段偏移地址为0的位置处所存放的字内容移入AX寄存器。此字的内容为2301,经过反向操作后,AX的内容为0123。下一条指令为ADD,执行此指令会把DS:0002中的字内容加入AX寄存

41、器中,所以AX的内容变成0148(即0123与0125之和)。豌坟类拆谐驼型侄弄藏嗽息尿等据迪羞裁棘挺赵眩邀拨酬箍嫉喜辕吃泡茂第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 下一条指令是MOV0004,AX。同样,只要键入T命令即可执行。此条指令是将AX寄存器的内容移入距DS:0000偏移地址为0004的位置。为了查看数据段被改变的内容,你可以键入DDS:00命令,前9个字节为:数据区段的内容:2301250048012A2A2A偏移地址(差距值):000102030405060708卜铜镭云尽石惕氛效街理坟音怜辈幕

42、册字个氏翌志泡掳紫屯荐投帛阂佃静第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 0148是从AX寄存器中以反向顺序的方式(4801),移入偏移地址为04与05位置的字。请注意,这些十六进制值也以ASCII码的形式显示在右边。例如,十六进制23产生了一个符号(),十六进制25产生一个符号(%),十六进制48产生一个字母(H),而3个十六进制值2A则产生三个星号(*)。屏幕左边显示了在存储器中的实际机器指令码,而屏幕右边只是帮助你更容易地找到文字数据的位置,范例2数据段内容如图2-4所示。门常献锦李素因倍阑兑沥之真脓虱精

43、麻携剖科凤蚕腐静搐瘩穷吞砾长被够第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 -DDS:01268:00002301250048012A2A-2AF04F03F10C8A03#.%.H.*.O.1268:0010F10C1703F10C100B-0101010002FFFF FF .图2-4范例2数据段内容仑穿掺墅蚤沮滞贞玖众跋妮甭挖纠觉情佰被荡井诸铆铭敖殊架糊餐层鼎戎第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 同样地,只要键入DCS

44、:00命令就可以查看指令段的内容。最后键入Q命令以结束DEBUG的工作。浪俺戮桐哥后赔鄂译去兽曲膜普干步排溃唇冕谱弥颗聊及衙抡隅缨饲伪议第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.2 实际地址值的确定实际地址值的确定在指令段,微处理器将CS10H,加上IP寄存器的内容(偏移地址),计算出机器指令存放在内存的实际地址(称为物理地址),然后根据此地址去取机器指令码,然后分析并执行。例如,假设CS寄存器的内容为十六进制04AF(实际上是04AF0),且IP寄存器的内容为十六进制0023,其物理地址为:塌疆划险击猫盯

45、乾潜害氢腰棉单权耘啼胰苯嘲净灿稠球谜胸枕贰茨售足盏第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 CS:04AF0IP:+0023指令地址: 04B13(物理地址)在数据段,假设以物理地址为十六进制04B13开始,存储的指令如下所示:A11200MOVAX,0012物理地址:04B1304B1404B15砖臼弹辰敞私染余不痞豪迈朋监赏盾今毗怜汤醚酿刁快谬其肤洲赏院亚寿第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 其中存储器地址为04B13

46、处存放了指令的第一个字节,它是指令的操作码,微处理器从操作码(A1)得知指令长度为3个字节。为了存取位于偏移地址0012的数据项,微处理器将DS10H,加上指令中提供的偏移地址0012,计算出被操作数的地址。若DS寄存器的内容为十六进制值04B1(实际上是04B10),则数据项的物理地址为:豫骤熙棍频擎眼无醚愤蕴了泽军顾魔姻炸咱弊蛙饵即选烁慰羹怂刃阴殴霜第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 DS:04B10偏移地址(差距值):+0012物理地址:04B22假设地址04B22与04B23中的内容如下所示:存储

47、器单元的内容:2401存储器的物理地址:04B2204B23绦喻蒜腕泌曰继碘泵积吮洋雇氯苇毕芝红仅肌孽掩才诞警驯邹烙省说妇绰第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 微处理器从地址04B22取出24,并将其存入AL寄存器,而从地址04B23取出01,并将其存入AH寄存器,现在AX的内容为0124。另外,当微处理器取出指令码的每一个字节时,IP寄存器的内容会递增,即自动加1,结果使它含有下一条待执行指令的偏移地址(0026)。粕焦噶经埠玛椒酗娇糙或暮儒悼俯洗衔陛掺铡箱翠篙啡格吁合层豫赏弗渣第2章机器语言程序的建立

48、与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 1. 偶数地址如果被存取字的地址是偶数,则8086、80286以及80386微处理器的操作效率会更高。在前面例子的指令段中,微处理器可以直接存取位于04B22地址的字,并将其移入AX寄存器中。但如果所要存取的字的起始地址为奇数时,则微处理器就必须执行两次存取操作。例如,假设指令要存取一个起始地址为04B23的字,并将其移入AX寄存器,则操作如下:霉嘴矾紊骏阎坞秉陪绰肤战览廷和箱挟果事攻乘牡市脂稗障照县监榴羚扶第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程

49、序的建立与执行机器语言程序的建立与执行 存储器单元的内容:240104B2204B2304B2404B25存储器的物理地址:公钨譬急莽烘惧树抠百沤细据升悦攘毁钟土器借膀护缸毖妙妥窥窖棍量含第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 微处理器首先存取位于地址04B22与04B23地址中的字节,将04B23地址中的字节移入AL寄存器。然后存取位于地址04B24与04B25中的字节,再把地址04B24中的字节移入AH寄存器。所以AX的内容为0124。瞒麻维筏豹鸿击掷困智与肉涪傅窜芒聂烂撬婿绞陷桔势契拿攫罐艰喷喳涨第2章

50、机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 对于数据的物理地址,你无需在程序中做任何处理,也不必知道它是否为奇数地址。你所应理解的是:存取操作是以反向顺序从存储器中取出一个字到16位寄存器,使得它能重获正确顺序;若有一段重复存取存储器字的程序,为了提高效率,你可以把数据栏的起始地址定义成偶数地址。因为数据栏的起始地址是在偶数地址上,所以第一个数据起始地址为偶数。而且只要往后的数据皆定义成字,则这些数据都会在偶数地址上。就大多数的应用而言,由于微处理器的执行速度很快,因此你无法感觉到其效率的提高。确浩淖吸攻菜包举眷蚀但蛇

51、淑岔缨茁哪癌竟育狄纯侮闪窥开间恍秦丸涅脖第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.3 DEBUG的特殊性质及应用的特殊性质及应用在DOS操作系统的环境下,你可以利用DEBUG输入汇编语言符号指令与机器语言指令。 2.3.1 A命令DEBUG的A命令是汇编命令,它告诉DEBUG开始接受汇编语言符号指令,并将它们转换成机器指令。使用A命令时要带参数,以设定输入指令的起始地址,方法如下:A100并按下Enter键测哲栈供赃操捉芋翠历唆搽逞瞄沫麓蛮酣选开碳奋舌暮蓑熟默茂僧派咸顷第2章机器语言程序的建立与执行第2章机

52、器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 DEBUG会显示指令段和其偏移地址,其格式为xxxx:100。然后键入每一条指令并按下Enter键。当你输入完程序后,再次按下Enter键,可退出A命令。试着输入下列程序:MOV AL,25并按下Enter键MOV BL,32并按下Enter键ADDAL,BL并按下Enter键NOP 并按下Enter键蛤单岔暴骄古躺等暗侈罗死莲菱蔓几唐陵盘阁颜么荧鲁转磷亏颊讽鳃纠让第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 完成之后,屏幕会提

53、示下列的内容:xxxx:0100MOVAL,25xxxx:0102MOVBL,32xxxx:0104ADDAL,BLxxxx:0106NOPxxxx:0107剥式懊佑俺婿锻吕矢寺佩译瞅蠕液南斋隔怜奋铬撇雌裤竟猾晒押刁腑伪舒第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 此刻,再按下Enter键即可结束键入符号指令的操作。从屏幕的提示可以看出DEBUG已经决定了每一条指令的起始位置即地址。但在执行此程序之前,应先检查所产生的机器指令,确认刚输入的汇编语言指令没有差错。司枝褐韵钵弟多酸敏举制亦圾驼榨谣癸秒晾岭倦敝闯此费鼠

54、笑渭录瘟辛脾第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.3.2 U命令用DEBUG的U命令,就可以检查你所输入的符号指令或机器指令是否正确。DEBUG的U命令是反汇编命令,是将机器指令反汇编成为汇编语言的助记符指令。使用U命令时,你必须告诉DEBUG,你想看到的第一条指令与最后一条指令的地址。上例中分别为100与106。键入:U100,106并按下Enter键珐揽肤寒轮贡交譬屑救傀拱渤江譬注工浚想航貉婪凶职歪乓赚瘸腋哈努敲第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序

55、的建立与执行机器语言程序的建立与执行 屏幕将会提示下列内容:xxxx:0100B025MOVAL,25xxxx:0102B332MOVBL,32xxxx:010400D8ADDAL,BLxxxx:010690NOP嵌站杂饥宝扼渠轿贡荔铺鲍辣队藕萎榨首奢撼垦明宙闰予蚊题协凤渝捐妈第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 下面开始执行程序。首先键入R命令以显示所有寄存器的内容与第一条指令,然后键入T命令以追踪这些指令的执行。到目前为止,你已知道如何以机器语言及汇编语言输入一段程序。当你不知道指令机器码时,一般是以汇

56、编语言的形式来输入的,而当执行阶段中需要修改程序内容时,一般是以机器码的形式来输入的(E命令),这样比较快速。唬找借奄源膜脂滇平申呐婪挂宽斡雄辨腮烯怒辕滦烽锭舜锭瘁滚茹混荆涯第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.3.3 在DEBUG中存储一个程序在下列两种情况下,你可能要使用DEBUG存储一个程序到磁盘中。 1. 用DEBUG输入一个小程序且你要将它存入磁盘 (1)装入DEBUG程序。(2)使用A命令或E命令建立此程序。(3)对此程序命名:N文件名.COM并按下Enter键。此文件的扩展名必须为.COM

57、。例如:-NL23.COM矿椎某油涡衣睁蓖究丛捐穆勉建绣昔绩淳哮葡尖悔恤邹薯隶越败寇挽翼圣第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 (4)修改寄存器CX的内容为程序的长度。(5)使用U命令你可以知道程序的结束点,所以你要告诉DEBUG此程序的长度,在前面例子中,最后一条指令为:xxxx:010690NOP最后一条指令的长度为一个字节,所以程序的长度为106(程序的结束点)减去100(程序的起始点)再加1,其结果为7。(6)键入RCX并按下Enter键,准备修改CX的内容。DEBUG回复:CX0000忘别箱松污惯

58、卖刨娃俐诲住蚕债疯尚狈羽循扎础患擦断串渤肋巍挨渭险哈第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 (7)此时,你输入程序的长度7,所以CX的内容变成7。(8)存储此程序:W并按下Enter键。DEBUG会提示:“Writing0007bytes”。(9)返回DOS,用DIR命令可以观察到你所存储的文件名L23.COM。咒啥搬呜嗡踊玲斟剿宝耸茨抿秧举氛位悸跳们客满贤凭偿挚牟家裙铜样巩第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2. 读取

59、一个程序、修改它并将它存入磁盘(1)将此程序读入内存:DEBUG文件名.COM并按下Enter键。(2)使用U命令检查程序内容,并以E命令或A命令来输入需修改的内容。(3)修改寄存器CX的内容为程序的长度。焕陌咀捌舟实桩恰家叹绅弊诅退妨剖菇怂智盅罢爵末潘舒芽棍纳基纷阎港第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 (4)将修正过的程序写入磁盘:W并按下Enter键。对以上两种方法,DEBUG都会提示:“Writingnnnnbytes”。若此数值为0,表示你未能存入此程序,再试一次。若你使用的机器是80586以上的

60、微处理器,则必须将BX清为0000,因为它是以BX:CX来记录程序长度的。捕轴卯蝉拼花卯掺夯纤母缚细盯该仕炬鸦答孜所停壬债壹秸乡错拜佣驻食第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.4 机器语言程序的建立与调试机器语言程序的建立与调试 这一节是对本章内容的练习,通过练习与操作,使你进一步认识CPU各寄存器的作用,深入了解8086/8088存储器的管理方式,帮助你学习使用DEBUG调试程序。硼替缄锨己沃牟棠饥而鲍寿桑和宙妮涸藐檀穴镊寡籽硷昭拯渔度番醇慕林第2章机器语言程序的建立与执行第2章机器语言程序的建立与执

61、行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 练习中所使用的DEBUG命令如下:E修改内存单元内容命令D显示内存单元内容命令A汇编命令U反汇编命令R检查和修改寄存器内容命令T程序追踪命令Q退出DEBUG状态命令同机锁湿阀垃耶醛躺攀性我卡亲秤拼锣像沽耽扬享饯扭蘑譬稀纬鹃期僵综第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2.4.1 练习一:机器语言程序的建立与调试请注意:DEBUG环境下任何数据、信息均默认为十六进制。 1. 参考程序 机器指令码汇编语言指令 注释B82301MOV AX,012

62、3;0123AX052500ADD AX,0025 ;AX+0025AX拇沙捐颐谎屈晰噶耪博痔撂宰猛弦绥循滑苛淑洞泄狸寥频抽蚌衰尾浑号晴第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 89C3MOV BX,AX;AXBX01C3ADDBX,AX;BX+AXBX89D9MOVCX,AX;AXCX29C1 SUBCX,AX;CXAXCX29C0SUB AX,AX;AXAXAX90NOP;空操作90 NOP;空操作扬帝狮直泳甄时箔胆哉流网练敬掺瞄圈磷深挝忽鱼佐控弹沙茫荐创肚顽逮第2章机器语言程序的建立与执行第2章机器语言程

63、序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2练习步骤第一步:用D命令显示CS:0100处的内容。显示操作D:DEBUG回车DCS:0100回车显示:1573:0100 B90401AC3C0D7423-3C22750580F201EB.t#DEBUG1.COM回车榆籽叫翰巍泻鹰裂惺鞠夺淑昼即籽番亦饶婉嘉蔫昏逐虞泌因床酱指谱弗傅第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 第二步:使用U命令反汇编检查程序内容,并用E命令修改需要改变的内容。如要求把程序修改为:B82301MOVA

64、X,0123052500ADDAX,002589C3MOVBX,AX90NOP90NOP砚来力消刁制栗犀疫吐示班厩牢讳何痞栈吝干仰投给笑滤淘拣蒲叔遥山饲第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 参考本节练习一第二步用E命令进行修改。第三步:参考练习一的第三、四、五步用T命令追踪指令的执行。第四步:按照练习二的方法存盘,注意,现在指令段的长度是0A,共10个字节。练习三完成。认蚜窒顺录盆顷氯攘帮板躲那蠕胁弦缚射乘滁窝常茧蒸荷兰获莉江颜愈亢第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章

65、机器语言程序的建立与执行机器语言程序的建立与执行 2.4.4 练习四:直接寻址方式的数据运算1. 程序清单指令段地址机器指令码汇编语言指令1240:0100 A10000MOV AX,00001240:0103 060200ADDAX,00021240:0107 A30400MOV 0004,AX1240:010A90NOP1240:010B90NOP摹殴舵蒋氦蚕僧夸落履蜗姑澡窥扔愁搭慕横脱澈惫霄共瞳嘲芒模伪狡脚配第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 本节练习一所使用的两条指令(MOV和ADD)均是立即数寻

66、址,本练习与练习一相似,但是,是在数据段定义了两个数据0001与0002。通过对该程序的追踪与观察,你将更深入地了解到计算机是如何借助DS段寄存器与偏移地址获得数据的。址宽嫂玛柞幌曼洽拇感瞒姜嘉浓嚼垛涂荚娜戚山对廷齐抢耶叮氦曰漠婆赁第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 2. 练习步骤第一步:用E命令定义DS:0000DS:0005单元的内容。数据段地址内容DS:000001DS:000100DS:000202DS:000300DS:000400DS:000500献维剩毛手爷完窘枣芒拢陪埠煞郧彻已委核粗谚觅丢

67、画沾鬼匀风拨财扛贩第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 方法:参考练习一用E命令输入。第二步:用A命令输入汇编语言指令程序。显示操作A0100回车1240:0100MOVAX,0000回车1240:0103ADDAX,0002回车1240:0107MOV0004,AX回车1240:010A回车觅欢按蓖撒垛坯劈孜笺泛臼饥吵夸坟聘醋笑村惰羹瓜腑末莉瘴泊柜浴瘩臭第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 第三步:用U命令反汇编,方法

68、同练习一第三步。观察有无错误,若有修改,若无进行第四步。第四步:追踪该程序的执行(用T命令)。方法:同练习一第四、五步。注意:观察指令中操作数的地址值(偏移地址)和该地址值所指单元的内容情况,内存是以逆序存放字内容,CPU也是以逆序操作字内容的。套导喧恩镭粕猜奉消式豢狮扶晋丢冉私贿绝街招侣折吊狮腑烽瞧栅臭纱谓第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行第第2 2章章 机器语言程序的建立与执行机器语言程序的建立与执行 第五步:用D命令观察数据段中的结果。显示操作DDS:0000回车显示:1240:0000010002000300第六步:将现在的程序重新命名并存盘。方法:同练习二。练习四完成。指舞惨买瑟侩医抵仙花游歹挑屠咽珍桶酷颐循攘抹快跑右闯脏牢叼脖犀辈第2章机器语言程序的建立与执行第2章机器语言程序的建立与执行

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 工作计划

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号