微机原理与接口技术:08第3章 寻址方式和指令系统3.3 习题3_第1页
微机原理与接口技术:08第3章 寻址方式和指令系统3.3 习题3_第2页
微机原理与接口技术:08第3章 寻址方式和指令系统3.3 习题3_第3页
微机原理与接口技术:08第3章 寻址方式和指令系统3.3 习题3_第4页
微机原理与接口技术:08第3章 寻址方式和指令系统3.3 习题3_第5页
已阅读5页,还剩20页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

交通信息与控制工程系教案(理论教学用)课程名称微机原理与接口技术第8次第4周2学时上课教室WM1310课程类型专业基础课授课对象自动化专业章节名称第三章寻址方式和指令系统(3.3)教学目的和要求掌握8086的基本指令,如逻辑运算和移位指令、串操作指令、程序控制指令等。讲授主要内容及时间分配逻辑运算和移位指令;(35min)串操作指令;(20min)程序控制指令;(25min)处理器控制指令。(10min)教学重点与难点重点:1.逻辑运算和移位指令的基本功能和格式;2.串操作指令的基本功能和格式;3.程序控制指令的基本功能和格式。难点:逻辑运算和移位指令的基本功能和格式。要求掌握知识点和分析方法1.逻辑运算和移位指令的格式、功能及应用方法;2.串操作指令的格式、功能及应用方法;3.程序控制指令的格式、功能及应用方法。启发与提问逻辑移位和算术移位指令的区别?教学手段多媒体+板书作业布置思考题:1.远跳转和近跳转的区别?3.2,3.53.9,3.113.12,3.14主要参考资料备注注:教案按授课次数填写,每次授课均应填写一份。重复班授课可不另填写教案。长安大学讲稿(第八讲)讲授内容三、逻辑运算和移位类1.逻辑运算逻辑运算指令对操作数的要求大多与MOV指令相同。逻辑运算是按位操作的,它包括AND(与)、OR(或)、NOT(非)、XOR(异或)和TEST(测试)指令。除“非”运算指令外,其余指令的执行都会使标志位OF=CF=0,AF位无定义,SF、ZF和PF根据运算结果设置。“与”运算指令格式:ANDOPRD1,OPRD2操作:两操作数相“与”,结果送目标地址。【例】要屏蔽AL中的高4位。AND AL,00001111B【例】AND AL,AL此指令执行前后,(AL)无变化,但执行后使标志位发生了变化,即CF=0,OF=0。“或”运算指令格式:OROPRD1,OPRD2操作:两操作数相“或”,结果送目标地址【例】(AL)=0FH,OR AL,10000000B(AL)=8FH【例】OR AL,AL指令执行前后,(AL)不变,但执行后标志位发生了变化,即CF=0,OF=0。“非”运算指令格式:NOTOPRD操作:操作数按位取反再送回原地址指令中的操作数不能是立即数指令的执行对标志位无影响例:NOTBYTEPTR[BX]“异或”运算指令格式:XOROPRD1,OPRD2操作:两操作数相“异或”,结果送目标地址两操作数自身相异或,结果XORAX,AX“测试”指令格式:TESTOPRD1,OPRD2操作:执行“与”运算,但运算的结果不送回目标地址。应用:常用于测试某些位的状态“测试”指令例从地址为38F0H的端口中读入一个字节数,如果该数的bit1位为1,则可从38FEH端口将DATA为首地址的一个字输出,否则继续读写端口数据。编写相应的程序段。LEASI,DATAMOVDX,38F0HWATT:INAL,DXTESTAL,02HJZWATT;ZF=1转移MOVDX,38FEHMOVAX,[SI]OUTDX,AX2. 移位指令(1) 逻辑/算术左移指令。格式:SHL/SALDST,CNT操作:指令按照CNT指定的移位次数对目的操作数进行左移位,移位结果送DST,最后一次移出的位送CF中。移动一位后,若CF与最高不相等,则OF=1;否则OF=0例:MOVAL,41HSHL(SAL)AL,1执行结果(AL)=82H,CF=0,OF=1【例】将(AX)乘以10。十进制数10的二进制形式为1010,即权为2和权为8的位为1,故采用2×(AX)+8×(AX),结果为10×(AX),程序段如下:SHL AX,1MOV BX,AXSHL AX,1SHL AX,1ADD AX,BX逻辑右移格式:SHRDST,CNT移动一位后,若次高位与最高位不相等,则OF=1;否则OF=00CF0CF格式:SAROPRD,ICFSAROPRD,CLCF循环移位指令不带进位位的循环移位带进位位的循环移位CF左移CF左移ROLCFCF右移ROR带进位位的循环移位CFCFCF左移RCL右移RCR循环移位指令的应用例如:有一个4字节数存放在DX和AX中,(DX)=0123H,(AX)=0456H,要求该数的4个字节一起左移一位。执行SALAX,1RCLDX,1注意:将AX的D15移到CF,再将CF移到DX的D0,DX的D15最后移到CF中。用于对某些位状态的测试;测试BL寄存器的第三位状态,并保持原内容不变。MOVCL,04HROLBL,CLJNZZERORORBL,CL……ZERO:RORBL,CL例:将1000H开始存放的四个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。MOVSI,1000HMOVDI,3000HMOVCX,4 BBB:MOVAL,[SI]MOVBL,AL ANDAL,0FH ORAL,30HMOV[DI],ALINCDIMOVAL,BLPUSHCXMOVCL,4SHRAL,CLORAL,30HMOV[DI],ALINCDIINCSIPOPCXDECCXJNZBBBHLT四、串操作指令针对数据块或字符串的操作;可实现存储器到存储器的数据传送;待操作的数据串称为源串,目标地址称为目标串。串操作指令的特点源串一般存放在数据段,偏移地址由SI指定。允许段重设;目标串必须在附加段,偏移地址由DI指定;指令自动修改地址指针,修改方向由DF决定。DF=0增地址方向;DF=1减地址方向;数据块长度值由CX指定可增加自动重复前缀以实现自动修改CX内容。重复前缀REP无条件重复REPE相等重复REPZ为零重复REPNE不相等重复REPNZ不为零重复串传送指令格式:MOVSOPRD1,OPRD2MOVSBMOVSW串传送指令常与无条件重复前缀连用对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。用串传送指令实现200个字节数据的传送:LEASI,MEM1LEADI,MEM2MOVCX,200CLDREPMOVSBHLT串比较指令格式:CMPSOPRD1,OPRD2CMPSBCMPSW串比较指令常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。测试200个字节数据是否传送正确,如果不正确,找出第一个不相等的字符,并将其地址和不相等的字符送到:BX和AL中。LEASI,MEM1LEADI,MEM2MOVCX,0C8HCLDREPECMPSBJZSTOPDECSIMOVAL,[SI]MOVBX,SISTOP:HLT串扫描指令格式:SCASOPRDSCASBSCASW执行与CMPS指令相似的操作,只是这里的源操作数是AX或AL【例】SCAS指令的举例。假设有一起始地址为BLOCK,长度为100个字节的存储区,现要对这一存储区进行测试,看其中是否有内容为00H的存储单元。

MOV DI,OFFSET BLOCKCLDMOV CX,100XOR AL,ALREPNE SCASBJZ FOUNDFOUND:   串装入指令格式:LODSOPRDLODSBLODSW对字节:AL←([DS:SI])对字:AX←([DS:SI])串送存指令格式:STOSOPRDSTOSBSTOSW操作:对字节:AL([ES:DI])对字:AX([ES:DI])五、程序控制指令1. 转移指令① 段内直接转移。格式:JMPNEARPTRTARGETJMPSHORTTARGET操作:(IP)←(IP)+16位位移量;(IP)←(IP)+8位位移量。② 段内间接寻址格式:JMPOPRD操作:(IP)←(EA)。说明:转向有效地址是一个通用寄存器或一个存储器单元的内容。该指令是绝对转移。

例如:若(DS)=0A000H,(BX)=0056H,TABLE=3200H,(SI)=0256H,(0A3256H)=1688H。执行JMPSI;JMPTABLE[BX]③段间直接转移汇编格式1:JMPFARPTR转移地址标号执行的操作: (IP)←转移地址标号的偏移地址(CS)←转移地址标号的段地址功能:无条件转移到指定标号地址处往下执行。汇编格式2:JMP段地址值:偏移地址执行的操作: (IP)←偏移地址值(CS)←段地址值功能:无条件转移到指定段的指定偏移地址处往下执行。P1 SEGMENTJMP FAR PTR NEXT1P1 ENDSP2 SEGMENTNEXT1:P2 ENDSJMP6000H:1000H④段间间接转移汇编格式:JMPDWORDPTR存储器寻址方式执行的操作: (IP)←寻址到的存储单元的第一个字(CS)←寻址到的存储单元的第二个字功能:无条件转移到指定段的指定偏移地址处。【例】如果TABLE是数据段中定义的一变量,偏移地址为0010H,(DS)=1000H,(10015H)=12H,(10016H)=34H,(10017H)=56H,(10018H)=78H,有指令JMP DWORD PTR TABLE[BX]执行时若(BX)=0005H,则执行后,(IP)=3412H,(CS)=7856H,即程序转移到7856H:3412H处。(2)条件转移指令。条件转移指令有16条,转移的条件是依据对除AF之外的五个状态标志位的判断。可对一个标志位进行判断,也可对两个甚至三个标志位进行判断。在内存中存放了100个8位的有符号数,其首地址位Table,试统计其中的正、负数以及零的个数,并分别放到相应的存储单元Plus,Minus,Zero中。Start:MOVAL,0MOVPlus,ALMOVMinus,ALMOVZero,ALLEASI,TABLEMOVCX,100CLDCHE:LODSBORALJSX1JZX2INCPLUSJMPNEXTX1:INCMINUSJMPNEXTX2:INCZERONEXT:LOOPCHECKHLT2. 循环控制指令控制程序在以当前IP为中心的-128~+127范围内循环执行;循环次数由CX寄存器指定。无条件循环指令格式:LOOPLABEL循环条件:CX≠0操作:DECCXJNZ符号地址条件循环指令格式:LOOPZLABELLOOPELABEL循环条件:CX≠0ZF=1格式:LOOPNZLABELLOOPNELABEL循环条件:CX≠0ZF=03. 过程调用和返回调用指令的执行过程将调用指令的下一条指令的地址(断点)压入堆栈;获取子过程的入口地址(子过程第1条指令的偏移地址);(执行子过程,含相应参数的保存及恢复);将断点偏移地址由堆栈弹出,返回原程序。段内调用子过程与原调用程序在同一代码段,在调用之前只需保护断点的偏移地址格式:CALLNEARPROC段内调用例CALLTIMRECALLWORDPTR[SI]段间调用子过程与原调用程序不在同一代码段,在调用之前需保护断点的段基地址和偏移地址。先将断点的CS压栈,再压入IP。格式:CALLFARPROCCALLFARTIMRECALLDWORDPTR[SI]返回指令从堆栈中弹出断点地址,返回原程序。格式:RETRET指令一般位于子程序的最后。4.中断指令中断是随机事件或异常事件引起,调用则是事先已在程序中安排好;响应中断请求不仅要保护断点地址,还要保护FLAGS内容;调用指令在指令中直接给出子程序入口地址,中断指令只给出中断向量码,入口地址则在向量码指向的内存单元中。格式:INTn操作:将FLAGS压入堆栈;清除IF和TF;将INT指令下一条指令的CS、IP压栈;取中断服务程序入口地址。溢出中断指令格式:INTO若OF=1,则启动一个类型为4的中断过程,给出一个出错标志,如果OF=0,不做任何操作。INTO指令通常安排在有符号数加减运算指令之后。中断返回指令格式:IRET中断服务程序的最后一条指令,负责恢复断点,恢复标志寄存器内容六、处理器控制指令对标志位的操作与外部设备的同步习题33.1~3.4课堂讲解,答案标注在教材相应页码。3.5分别指出下列指令中源操作数和目的操作数的寻址方式。若是存储器寻址,试写出其有效地址和物理地址。设(DS)=6000H,(ES)=2000H,(SS)=1500H,(SI)=00A0H,(DI)=6010H,(BX)=0800H,(BP)=1200H,数据变量VAR为0050H。【解】:(1)MOVAX,3050H源操作数寻址方式:立即数寻址。只在寄存器中传输,与存储单元无关,故不用计算。(2)MOVDL,80H源操作数寻址方式:立即数寻址。只在寄存器中传输,与存储单元无关,故不用计算。(3)MOVAX,VAR直接寻址(4)MOVAX,VAR[BX][SI]源操作数是基址变址相对寻址。有效地址EA=基址寄存器BX+变址寄存器SI+偏移量VAR=0800H+00A0H+0050H=08F0H。P48由于段寄存器一般由基址寄存器决定,使用BX,默认段寄存器DS;使用BP,默认段寄存器SS。物理地址=DS左移4位+有效地址EA=608F0H(5)MOVAX,[BX+25H]源操作数是寄存器相对寻址。有效地址=基址寄存器BX+25H=0800H+25H=0825H因为基址寄存器是BX,所以段寄存器对应的是DS因此,物理地址=DS左移4位+有效地址EA=60825H(6)MOVDI,ES:[BX]源操作数是寄存器间接寻址,允许段超越ES。有效地址EA=BX=0800H物理地址=附加段ES左移4位+EA=20000H+0800H=20800H(7)MOVDX,[BP]源操作数是寄存器间接寻址因为是使用BP,所以对应堆栈段SS有效地址EA=BP=1200H物理地址=SS左移4位+EA=15000H+1200H=16500H(8)MOVBX,20H[BX]寄存器相对寻址,同(5)有效地址=基址寄存器BX+20H=0800H+20H=0820H因为基址寄存器是BX,所以段寄存器对应的是DS因此,物理地址=DS左移4位+有效地址EA=60820H(9)ANDAX,BX源操作数是寄存器寻址,由于是在两个寄存器之间传递数据,即在CPU内部,因此无需存储器操作。不用计算物理地址。(10)MOVBX,ES:[SI]寄存器间接寻址附加段的段超越。有效地址EA=SI=00A0H物理地址=ES左移4位+EA=20000H+00A0H=200A0H(11)ADCAX,[BX+DI]基址变址寻址基址寄存器决定段寄存器为DS,有效地址EA=BX+DI=0800H+6010H=6810H物理地址=DS左移4位+EA=60000H+6810H(12)PUSHDS源操作数是寄存器寻址不用计算有效地址和物理地址,数据内容直接在DS中,即6000H内容直接压入堆栈3.6.设堆栈指针SP的初值为2300H,(AX)=5000H,(BX)=4200H。执行指令PUSHAX后,(SP)的值为多少?再执行指令PUSHBX及POPAX之后,(SP)的值为多少?(AX)的值为多少?(BX)的值为多少?【解】:执行指令PUSHAX后,(SP)<-(SP)-2(SP)=2300H-2=22FEH(AX)=4200H(BX)=4200H3.8已知DS=2000H,有关的内存单元为(21000H)=00H,(21001H)=12H,(21200H)=00H,(21201H)=10H,(23200H)=20H,(23201H)=30H,(23400H)=40H,(23401H)=30H,(23600H)=60H,(23601H)=30H,数据变量COUNT的内容为1400H,其有效地址为1200H,执行下列指令MOVBX,OFFSETCOUNT;MOVSI,[BX];MOVAX,COUNT[SI][BX];,执行下列指令后,寄存器AX,BX,SI的值分别为多少?【解】:MOVBX,OFFSETCOUNT;【分析】:OFFSET是偏移量属性,表示这条指令目标代码的首字节在段内距离段起始点的字节数。因此(BX)=1200H如果是MOVBX,COUNT?,则是把DS段内以有效地址COUNT起始的两个单元内容送入BX寄存器。MOVSI,[BX];由于是使用BX寄存器作基址寄存器,所以使用DS寄存器作段基址DS左移4位+(BX)=20000H+1200H=21200H因为SI为16位寄存器,所以要取从21200H开始的两个字节单元的内容。(SI)=1000HMOVAX,COUNT[SI][BX];物理地址=DS左移4位+(SI)+(BX)+COUNT=20000H+1000H+1200H+1400H=23600H由于(23400H)=40H,(23601H)=30H,所以(AX)=3040H答:(BX)=1200H(SI)=1000H(AX)=3040H3.9设标志寄存器原值为0401H,AX=3272H,BX=42A2H【解】:运算之前,标志寄存器的值0401H,展开为0000010000000001,其中DF=1,CF=1。AL=72H,BH=42H执行SBBAL,BH(AL)-(BH)-CF=72H-42H-1=2FH01110010-01000010=00110000-1=00101111原AH保持不变,为32H所以(AX)=322FHCF=0PF=0辅助进位AF=1OF=0所以标志寄存器值为00000100000100000=0410H查看标志寄存器方法-rf标志名中文标志为1时标志为0时

OF[OverflowFlag]溢出标志ov[OVerflow]nv[NotoVerflow]

DF[DirectionFlag]方向dn[DowN]up[UP]

IF[InterruptFlag]中断ei[Enable]di[Disable]

SF[SignFlag]符号ng[NeGative]pl[PLus]

ZF[ZeroFlag]零zr[ZeRo]nz[NotZero]

AF[AuxiliarycarryFlag]辅进位ac[Auxiliary]na[Not]

PF[ParityFlag]奇偶pe[Eve]po[Odd]

CF[CarryFlag]进位cy[CarrY]nc[NotCarry]3.10设标志寄存器原值为0A11H,SP=0060H,AL=4,下列几条指令执行之后,AX,SP和标志寄存器的值分别为多少?【解】:目的是练习标志传送指令的用法画出堆栈段的图示PUSHF(SP)<-(SP)-2,((SP)+1,(SP))<-(PSW)栈顶位置减2,将当前状态标志寄存器内容0A11压入堆栈。LAHF(AH)<-(FLAGSL)将标志寄存器低字节中的5个标志位分别传送到AH的对应位。AH=11HXCHGAH,AL交换AH和AL,原来的(AL)=4=00000100=04H,则交换后(AH)=04H,(AL)=11HPUSHAX将AX=0411H压入堆栈,SAHF将AH送标志寄存器(FLAGSL)<-AHPOPF标志出栈,标志寄存器内容为0411H【解】:(AX)=0411H(SP)=005EH标志寄存器=0411H3.12设若内存单元DATA在数据段中偏移量为24C0H,24C1H---24C3H单元中依次存放着55H,66H,77H,88H,执行下列几条指令后,寄存器AX,BX,CL,SI,DS的值分别是多少?【解】:首先画出数据段的图示MOVAX,DATA将DS段内以有效地址DATA起始的两个单元的内容送入AX寄存器。(AX)=6655HLEASI,DATA取地址,(SI)=24C0HMOVCL,[SI](CL)=55HLDSBX,DATA(DEST)<-(SRC),(DS)<-(SRC+2)源操作数地址中的内容送BX,(BX)=6655H,源操作数地址加2的内容送数据段寄存器DS(DS)=8877H(AX)=6655H(BX)=6655H(SI)=24C0H(CL)=55H(DS)=8877H3.14 假设DS=212AH,(CS)=0200H,(IP)=1200H,(BX)=0500H,(DI)=2600H,位移量DATA=40H,(217A0H)=2300H,(217E0H)=0400H,(217E2H)=9000H,试确定下列转移指令的转移地址(1) JMP2300H(2) JMPWORDPTR[BX](3) JMPDWORDPTR[BX+DATA](4) JMPBX(5) JMPDWORDPTR[BX][DI]【解】:(1)段内直接转移IP<-2300H;(IP)=2300H(2)段内间接转移;程序转移的偏移地址在寄存器或存储单元中。对存储器单元寻址,在符号前加操作符WORDPTR,表示取得的转移地址是字的有效地址。物理地址=DS左移4位+BX=212A0H+0500H=217A0H,(217A0H)=2300H,所以(IP)=2300H。(3)段间间接转移;程序转移的偏移地址在寄存器或存储单元中。由存储器指定的双字单元的低位字地址单元存放偏移地址,高位字地址单元存放段基址,分别送入IP和CS中。(IP)<-DS:[BX],CS<-DS:[BX+2]DS左移4位+BX+DATA=212A0H+0500H+40H=217E0H(IP)=0400H(CS)=9000H(4)段内间接转移;程序转移的偏移地址在寄存器或存储单元中。(IP)<-(BX)(IP)=0500H(5)DS:[BX][DI]送IPDS:[BX][DI+2]送CS根据已知条件不能计算最终结果!3.17 执行下列指令后,AX寄存器的内容是什么?TABLEDW10,20,30,40,50ENTRYDW3………MOVBX,OFFSETTABLE;ADDBX,ENTRYMOVAX,[BX]【解】:(AX)=1E00H3.19.试写出把DX、AX中的双字右移四位。【解】:MOVCL,4;设置循环次数为4.SHRAX,CL;实现将AX逻辑右移MOVBL,DL;将DL的低4位暂存在BL中SHRDX,CL;实现将DX逻辑右移SHLBL,CL;将BL逻辑左移ORAH,BL;将BL或上AH;也就是使DL的低4位或上AH高4位,从而实现了DX、AX中的双字右移四位。20.当执行中断指令时,堆栈的内容有什么变化?如何求得子程序的入口地址?【分析】:过程调用只保护返回地址,中断指令还要保护状态标志进栈。具体三种方法:INTn、INTO、IRET21.试述中断指令IRET与RET指令的区别【分析】:IRET:将堆栈中的断点地址弹出赋给IP和CS,以实现中断返回;将标志寄存器的值弹出,恢复中断前的状态。RET:将断点地址从堆栈中弹出,然后按返回地址继续执行。该指令对状态标志位无影响。该指令通常放在子程序末尾,使子程序执行完毕后能返回主程序继续执行。22.根据下列给定的条件写出指令或指令序列。(1)将一个字节的立即数送到地址为NUM的存储单元中。MOVNUM,22H(2)将一个8位立即数与地址为BUF的存储单元内容相加。ADDBUF,22H(3)将地址为ARRAY的存储单元中的字数据循环右移一位。RORARRAY,1(4)将16位立即数与地址为MEM的存储单元中的数比较。CMPMEM,2222H(5)测试地址为BUFFER的字数据的符号位。TESTBUFFER,8000H(6)将AX寄存器及CF标志位同时清0。【分析】当一个操作数自身做“异或”运算的话,由于每一位都相同,则“异或”结果必为0,且使进位标志CF也为0.因此XORAX,AX某一个操作数,自己和自己相“与”,操作数不变,但可以使进位标志CF清0。因此ANDAX,0某一个操作数,自己和自己相“减”,使得进位标志CF清0。因此SUBAX,AX(7)用直接寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。MOVBUF,[ARRAY+5]MOVBX,BUF(8)用寄存器寻址方式将首地址为ARRAY的字数组中第5个数送往寄存器BX中。LEASI,ARRAYADDSI,5MOVBX,SI(9)用相对寻址方式将首地址为ARRAY的字数组中第8个数送往寄存器BX中。MOVBX,[ARRAY+8](10)用基址变址寻址方式将首地址为ARRAY的字数组中第N个数送往寄存器BX中。LEAAX,ARRAYMOVSI,NMOVBX,[AX][SI](11)将首地址为BCD_BUF存储单元中的两个压缩BCD码相加,并送到第三个存储单元。LEABX,BCD_BUFMOVAX,[BX]ADCAX,[BX+1]25.若AL=0FFH,BL=13H,指出下列指令执行后标志AF、OF、ZF、SF、PF、CF的状态。【分析】AF:辅助进位,低字节向高字节进位(借位)AF置1,否则置0。OF:溢出标志,如果两个带符号数的符号相同,但结果的符号不同,则把OF置1,代表两个带符号数运算已经溢出。ZF:运算结果为0,则ZF置1。SF:符号标志,结果为负,则SF置1。PF:奇偶标志,若含有偶数个1时,PF=1,否则为0。CF:进位标志,当执行加法(减法)运算时,使最高位产生进位(或借位)时,CF=1。(1)ADDBL,ALAF=1,OF=1,ZF=0,SF=0,PF=1,CF=1(2)SUBBL,ALAF=0,OF=0,ZF=0,SF=0,PF=1,CF=0(3)INCBLAF=0,OF=0,ZF=0,SF=0,PF=1,CF=0(4)NEGBLAF=0,OF=0,ZF=0,SF=1,PF=1,CF=0(5)ANDAL,BLAF=0,OF=0,ZF=0,SF=0,PF=0,CF=0(6)MULBLAF=0,OF=0,ZF=0,SF=0,PF=0,CF=0(7)CMPBL,ALAF=1,OF=1,ZF=0,SF=0,PF=1,CF=1(8)IMULBLAF=0,OF=0,ZF=0,SF=0,PF=0,CF=0(9)ORBL,ALAF=0,OF=0,ZF=0,SF=1,PF=1,CF=0(10)XORBL,BLAF=0,OF=0,ZF=1,SF=0,PF=1,CF=026.已知BUF单元有一个单字节无符号数X,按要求编写一段程序段计算Y(无符号字数据),并将其存于累加器。Y=X-20+3XMOVZXAX,XMULAX,4SUBAX,20#4楼得分:0回复于:2009-09-1721:43:33DATASEGMENTYDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DS:[SI]//SI为x所在单元偏移地址MULAX,3SUBAX,20MOVY,AXCODEENDSENDSTART#5楼得分:0回复于:2009-09-1721:50:36DATASEGMENTXDWD//D为一个实数数据x的偏移地址长度YDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVSI,XMOVAX,DS:[SI]//SI为x所在单元偏移地址MULAX,3SUBAX,20MOVY,AXCODEENDSENDSTART#6楼得分:0回复于:2009-09-1722:15:54DATASEGMENTYDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVSI,OFFSETX//去x的偏移地址MOVAX,DS:[SI]//SI为x所在单元偏移地址MULAX,3SUBAX,20MOVY,AXCODEENDSENDSTART#8楼得分:0回复于:2009-09-1811:00:14好久不看书,有点问题,我改了下~!DATASEGMENTXDW1000HYDW?DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVSI,OFFSETX//取x的偏移地址MOVAX,DS:[SI]//SI为x所在单元偏移地址MOVBX,3MULBXSUBAX,20MOVY,AXCODEENDSENDSTART#10楼得分:0回复于:2009-09-1813:28:32.586poptionsegment:use16data1segmentxdb30;varXdata1endscode1segmentassumeds:data1,cs:code1start:movd

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论