关于汇编c语言位移运算符量问题

Loading Preview微机原理与接口技术-北京大学出版社412 PagesSign upBefore we can start your download,please take a moment to join our communityof 19,095,215 academic researchers.&&Connect&&Connect&&Sign up with emailBy signing up, you agree to our&Download PDFs forover 5.4 Million papers Share your paperswith other researchersSee analytics on yourprofile & papersFollow other peoplein your field
Log In&with&FacebookLog In&with&GoogleEmail:Password:Remember me on this computeror&Enter the email address you signed up with and we'll email you a reset link.
Academia & 2015【关于汇编语言位移量问题】-突袭网
13:08:12【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"关于汇编语言位移量问题"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"关于汇编语言位移量问题"相关的详细问题如下: 数据段段基址 MOV BX ,34H, [BX+2] 设数据段BUF单元依次有;DH=56H MOV DX ,12H则:78H;DX=1234H为什么DX=1234H而不是3456H, BUF单元有效地址 MOV DH ,56H, [BX+1] : MOV DS ===========突袭网收集的解决方案如下===========
解决方案1:好,DX是16位寄存器, [BX+2]!BX+0指向78H地址,MOV DX , [BX+1]的DH覆盖了,BX+1指向56H地址, [BX+2]改为MOV DL ,如果MOV DX ,BX+2指向34H地址, [BX+2] 将你前面MOV DH ,DX就等于3456H了
================可能对您有帮助================
问:汇编语言中的位移量是什么意思?在有效地址中,寻址方式中提及的位移量...答:初学汇编的人,对于数据在内存中的存储十分迷茫. 其实很简单,一个连一个地存储. 除非你特别指定要空出几个字符.否则都是一个空都不落地往下存. 于是,当你连续定义了字符a、字b、双字c,当你知道了a的偏移量,你可以用这个(偏移量+2)配合段地址...===========================================问:说明一下他们各自的用途答:偏移地址即有效地址EA(逻辑地址),寻找的实际物理地址就是段地址*10H+偏移地址。若操作数的寻址方式是......相对寻,则位移量就是构成偏移地址的一部分 都是操作数的寻址方式,只是寻址的方式有点不同而已,至于其它的用途好像就没什么了都是...===========================================问:设(AL)=5 求 10X 请使用移位指令表示 本人初学 只知道左移一位相当于当...答:这个简单,10X = 8X + 2X = (X ===========================================问:设(AL)=5 求 10X 请使用移位指令表示 本人初学 只知道左移一位相当于当...答:Code Segment Assume CS:Code,DS:Code s1 db 129,78,99,72,63,51,49,37,253,199 Odd_Num equ 1 ;奇数 Even_Num equ 0 ;偶数 Parity equ Odd_N相与结果存于奇数字节 Start: push cs po使数据段、附加段与代码段同段 cld...===========================================问:请问汇编语言的8种位移指令在位移过程中CF的变化,并详细举例说明. 谢谢答:8种位移指令中只有:RCL和RCR影响CF,以RCL为例: MOV A,01H MOV CL,08H RCL A,CL 则运行后CF为1. ---------------------- ---------------------- 继续回答: 不是"在RCL或RCR指令后,最高位放入CF";RCL是带进位左循环移位指令,RCR是带进位右循环...===========================================问:请问汇编语言的8种位移指令在位移过程中CF的变化,并详细举例说明. 谢谢答:讲到相对就有正负之分,而在计算机中,数是用补码表示的,16位的补码范围是-3次方,最高位为符号位)到次方减1).所以16位的相对位移是-.===========================================问:C语言的fseek(文件指针,位移量,参照点)的位移量能不能写sizeof(NODE)...答:可以,但结果可能不是你想要的,如果NODE里面全都是char就没问题,假如有一个一位数的int,那么sizeof(NODE)=4,位移量为4显然不会得到你想要的结果===========================================问:还有问题1 关于寄存器间接寻址的问题 位移量和偏移量有什么不同 问题2 ...答:位移量一般由立即数提供,可以使一个8位或16位的立即数。偏移量指的是偏移地址。位移量是偏移量的一个组成部分。 为了表示偏移地址的方便和灵活,偏移地址可以由几部分构成。 基址寄存器+变址寄存器可以理解为: 基址寄存器中保存一个数组的起始...===========================================问:根据以下要求写出相应的汇编语言指令 (1) 用寄存器BX和SI的基址变址寻址...答:(1) 用寄存器BX和SI的基址变址寻址方式把存储器中的一个字节传送到AL寄存器中。 MOV AL, [BX + SI] (2) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加, 并把结果送回存储器中。 ADD [BX + 0B2], CX (3) 将AX寄存器...===========================================晕死,你总共多少条代码啊 "190 Severe Errors" 你如果不知道MASM.exe link.exe debug.exe 怎么用建议你买一本王爽的汇编语言第2版这样就都懂了,,,,===========================================呵呵,在汇编语言里,地址是一个很重要的东西,你要读写数据,首先你得找到你要的数据的地址,同样程序也是被放在内存里的,如果没有标号来说明,CPU怎么知道它放在内存的哪个...===========================================因而我们一般人是不会记也很难记住的,为了解决这个问题,所以才发明了汇编语言,用助... 对于复杂的内部结构,有很大一部分人还是无从着手的.所以就出现了高级语言,当程序员...===========================================兄弟,你理解错了,首先你要明白,汇编语言是一种针对具体机器的低级语言,这里说的不同机器一般来讲是指CPU指令系统不相兼容的两种机器,比如常用的8086与51,DSP,ARM,等...===========================================这么说把!简单的可以这么理解,高级语言先转换成汇编语言,汇编语言跟机器语言一一对应然后执行。虽然表达的可能不是很恰当,不过总体就是这个意思,就是说他就像你跟外国...===========================================若CX=0,则结束循环;否则,重复执行循环体。2.汇编语言离开程序回到DOS应使用哪个INT功能。MOV AH,4CH INT 21H3.简介JMP/JC,CMP/PEST用法。计算机汇编语言中的一...===========================================16位汇编语言中,物理地址=段地址*16(即16进制的10H,亦即二进制中左移4位,或16进制中左移一位)+偏移地址,构成20位地址(因为8086CPU有20位地址线)。所以此题的PA=DS...===========================================呵呵,好像是MCS-51单片机的汇编语言呐,大家别误解了。在Keil编译系统里面,累加器A,有时也可以写成ACC;另外,也可以使用它的地址进行数据传送,地址是E0H。使用地址代替...===========================================错误在这里:MOV TH0,#FEH,51单片机的汇编语言中,十六进制数如果是以字母开头的,必须在前面加0.===========================================汇编中有个INT 1CH,是自动每隔1/ 18.2秒的时间自动执行一次,小程序可以利用这个中断,执行18次,就是过1秒钟了。===========================================
12345678910汇编语言总结(3)(超全的哦!!)
30、逻辑右移 SHR (shift logical right)
指令的汇编格式:SHR dst,cnt
指令的基本功能:SHR指令向右逐位移动cnt次,每次逐位移动后,最高位用0来补充,最低位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
当cnt=1时,移动后最高位的值发生变化。
当cnt=1时,移动时最高位的值未发生变化。
&&&SF、ZF、PF根据移动后的结果设置。
31、算术左移 SAL (shift arithmetic left)
指令的汇编格式:SAL dst cnt
指令的基本功能:SAL指令向左逐位移动cnt次,每次逐位移动后,最低位用0来补充,最高位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
当cnt=1时,移动后最高位的值发生变化。
当cnt=1时,移动时最高位的值未发生变化。
&&&SF、ZF、PF根据移动后的结果设置。
32、算术右移 SAR (shift arithmetic right)
指令的汇编格式:SAR dst,cnt
指令的基本功能:SAR指令向右逐位移动cnt次,每次逐位移动后,最高位用符号位来补充,最低位移入CF。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移位次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
当cnt=1时,移动后最高位的值发生变化。
当cnt=1时,移动时最高位的值未发生变化。
&&&SF、ZF、PF根据移动后的结果设置。
33、循环左移 ROL (rotate left)
指令的汇编格式:ROL dst,cnt
指令的基本功能:ROL
对由dst指定的寄存器或存储器操作数左移循环移动cnt所指定的次数,每左移一次,把最高位同时移入CF和操作数最低位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
当cnt=1时,移动后最高位的值发生变化。
当cnt=1时,移动时最高位的值未发生变化。
&&&SF、ZF、PF根据移动后的结果设置。
34、循环右移 ROR (rotate right)
指令的汇编格式:ROR dst,cnt
指令的基本功能:ROR
对由dst指定的寄存器或存储器操作数右移循环移动cnt所指定的次数,每右移一次,把最低位同时移入CF和操作数最高位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt&1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值
当cnt=1时,移动后最高位的值发生变化。
当cnt=1时,移动时最高位的值未发生变化。
&&&SF、ZF、PF根据移动后的结果设置。
35、带进位的循环左移 RCL (rotate left through carry)
指令的汇编格式:RCL dst,cnt
指令的基本功能:RCL
对由dst指定的寄存器或存储器操作数,连同进位标志CF左循环移动,m所指定的次数,每左移一次,把操作数的最高位移入CF,而CF中原有内容移入操作数的最低位。
指定支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写在指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
当cnt=1时,移动后最高位的值未发生变化。
当cnt=1时,移动后最高位的值发生变化。
&&&SF、ZF、PF标志位不受影响。
36、带进位的循环右移 RCR (rotate right through carry)
指令的汇编格式:RCR dst,cnt
指令的基本功能:RCR
对由dst指定的寄存器或存储器操作数,连同进位标志CF右循环移动,m所指定的次数,每右移一次,把操作数的最高低位移入CF,而CF中原有内容移入操作数的最高位。
指令支持的寻址方式:目的操作数dst可以是除立即数外的任何寻址方式。移动次数(或位数)cnt=1时,1可以直接写入指令中,cnt〉1时,cnt必须放入CL寄存器中。
指令对标志位的影响:CF=移入的数值。
当cnt=1时,操作数最高位的值未发生变化。
当cnt=1时,操作数最高位的值发生变化。
&&&SF、ZF、PF标志位不受影响。
&[串处理指令]
一、设置方向标志指令
37、DF置零 CLD (clear direction flag)
& & DF置一 STD (set direction
指令的汇编格式:CLD
指令的基本功能:CLD& &DF=0
STD& &DF=1
二、串处理指令
38、串传送 MOVSB / MOVSW (move string byte/word)
指令的汇编格式:MOVSB
&& & MOVSW
指令的基本功能:(ES:DI)&-(DS:SI)
(SI)&-(SI)+/-1(字节)或+/-2(字)
(DI)&-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。
39、存串 STOSB / STOSW (stroe from string byte/word)
指令的汇编格式:STOSB
&& & STOSW
指令的基本功能:(ES:DI)&-(AL)或(AX)
(DI)&-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。
40、取串LODSB / LODSW (load from string byte/word)
指令的汇编格式:LODSB
&& & LODSW
指令的基本功能:(AL)或(AX)&-(DS:SI)
(SI)&-(SI)+/-1(字节)或+/-2(字)
指令对条件码的影响:不影响条件码。
指令的特殊要求:源串必须在数据段中,目的串必须在附加段中,串处理指令隐含的寻址方式是SI和DI寄存器的间接寻址方式。源串允许使用段跨越前缀来指定段。
41、串比较 CMPSB / CMPSW (compare string byte/word)
指令的汇编格式:CMPSB
&& & CMPSW
指令的基本功能:(DS:SI)-(ES:DI) 根据比较结果设置条件码
(SI)&-(SI)+/-1(字节)或+/-2(字)
(DI)&-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:SF=1 减法结果为负数(符号位为1)
减法结果为正数(符号位为0)
减法结果为零
减法结果不为零
二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
42、串扫描 SCASB / SCASW (scan string byte / word)
指令的格式:SCASB
&& & SCASW
指令的基本功能:(AL)&-(ES:DI)或(AX)&-(ES:DI)
根据扫描比较的结果设置条件码。
(DI)&-(DI)+/-1(字节)或+/-2(字)
指令对条件码的影响:SF=1 结果为负数(符号位为1)
结果为正数(符号位为0)
结果不为零
二进制减法运算中最高有效位向高位有借位(被减数小于减数,不够减的情况)
二进制减法运算中最高有效为向高位无借位(被减数〉=减数,够减的情况)
两数符号相反(正数-负数,或负数-正数),而结果符号与减数相同。
同符号数相减时,或不同符号数相减,其结果符号与减数不同。
三、串重复前缀
43、重复执行串 REP& &&
指令的汇编格式:REP&
&&&(CX)=重复次数
指令的基本功能:① (CX)=0时,串指令执行完毕,否则执行② ~ ④
② (CX)←(CX)-1③ 执行串指令(MOVS或STOS)④ 重复执行①
44、相等/为零时重复执行串指令 REPE/REPZ
指令的汇编格式:REPE / REPZ&
&&&(CX)=比较/扫描的次数
指令的基本功能:① (CX)=0或ZF=0时,结束执行串指令,否则继续② ~ ④
② (CX)←(CX)-1③ 执行串指令(CMPS或SCAS)④ 重复执行①
45、不等/不为零时重复执行串指令 REPNE / PEPNZ
指令的汇编格式:REPNE / PEPNZ& &
(CX)=比较/扫描的次数
指令的基本功能:① (CX)=0或ZF=1,结束执行串指令,否则继续② ~ ④
② (CX)←(CX)-1③ 执行串指令(CMPS或SCAS)④ 重复执行①
控制转移指令]
一、无条件转移指令
46、短转移 JMP SHORT label (short jump)
指令的汇编格式:JMP SHORT label
指令的基本功能:(IP)&-当前(IP)+8位位移量&
&8位位移量是汇编程序在汇编源程序时,根据目标地址和当前IP之间的距离自动生成的。
指令对条件码的影响:对标志位无影响。
47、近转移 JMP NEAR PTR label (near jump)
指令的汇编格式:直接转移 JMP label (direct jump)
&& & 寄存器间接转移 JMP
reg (register indirect jump)
&& & 存储器间接转移 JMP
WORD PTR OPR (memory indirect jump)
指令的基本功能:JMP label& & (IP)
&- OFFSET label = (IP)当前+16位位移量
&(IP) &- (reg)
&& & JMP WORD
&- (PA+1,PA)
指令支持的寻址方式:指令中的转向地址可以是直接寻址方式、寄存器寻址方式、寄存器间接寻址方式和存储器寻址方式。
指令对条件码的影响:对标志位无影响。
48、远转移 JMP FAR PTR label (for jump)
指令的汇编格式:JMP FAR PTR label
指令的基本功能:(IP)&-label的段内偏移地址&
(CS)&-label所在段的段地址
指令支持的寻址方式:远转移的目的地址可以使用除立即寻址方式外的任何寻址方式来表示。指令对条件码的影响:对标志位无影响。
二、条件转移指令
指令的汇编格式及功能
根据条件码的值转移:
49、JZ(JE) OPR& & ZF=1
50、JNZ(JNE) OPR&&ZF=0
51、JS OPR& &&
52、JNS OPR& &&
53、JO OPR& &&
54、JNO OPR& &&
55、JP OPR& &&
56、JNP OPR& &&
57、JC OPR& &&
58、JNC OPR& &&
比较两个无符号数,根据比较的结果转移
59、JB(JNAE,JC)
OPR&&CF=1&
&&&被减数小于减数则转移
60、JNB(JAE,JNC) OPR CF=0&
&&&被减数大于或等于减数则转移
61、JBE(JNA) OPR&
&&&CF或ZF=1&
& 被减数小于或等于减数则转移
62、JNBE(JA) OPR&
&&&CF或ZF=0&
& 被减数大于减数则转移
比较两个带符号数,根据比较结果转移
63、JL/JNGE OPR&
&SF异或OF=1&
被减数小于减数则转移& &
64、JNL/JGE& &&
SF异或OF=0& &&
被减数不小于减数则转移
65、JLE/JNE& &&
(SF异或OF)与ZF=1& &
被减数不大于减数则转移
66、JNLE/JG& &&
(SF异或OF)与ZF=0& & 被减数大于减数则转移
根据CX寄存器的值转移
67、JCXZ& &&
(CX)=0& &&
&&&CX内容为零则转移
指令的特殊要求:所有条件转移指令都是短转移指令,转移的目标地址必须在当前IP地址的-128至+127字节范围之内,因此条件转移指令是2字节指令。
三、循环指令
68、循环 LOOP (loop)
指令的汇编格式:LOOP label
指令的基本功能:① (CX)←(CX)-1&&②
若(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~
+127字节范围之内。
69、为零/相等时循环 LOOPZ/LOOPE (loop while nonzero or equal)
指令的汇编格式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX)-1
      && ②
若ZF=1且(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~
+127字节范围之内。
70、不为零/不相等时循环 LOOPNZ/LOOPNE (loop while nonzero or not equal)
指令的汇编格式:LOOPNZ/LOOPNE label
指令的基本功能:① (CX)←(CX)-1
      && ②
若ZF=0且(CX)≠0,则(IP)←(IP)当前+位移量,否则循环结束。
指令的特殊要求:循环指令都是短转移格式的指令,也就是说,位移量是用8位带符号数来表示的,转向地址在相对于当前IP值的-128 ~
+127字节范围之内。
四、子程序调用
71、段内直接近调用 CALL SUBROUT
指令的基本功能:(SP)&-(SP)-2
((SP)+1,(sp))&-(IP)
(IP)&-(IP)+16位位移量
& & 段内间接近调用 CALL DESTIN
指令的基本功能:(SP)&-(SP)-2
((SP)+1,(SP))&-(IP)
(IP)&-(EA)
72、段间直接调用 CALL FAR PTR SUBROUT
指令的基本功能:(SP)&-(SP)-2,((SP))&-(CS)当前
(SP)&-(SP)-2,((SP))&-(IP)当前
(IP)&-偏移地址(在指令的第2、3个字节)
(CS)&-段地址(在指令的第4、5个字节)
五、返回指令
73、段内返回(近返回) RET
指令的基本功能:(IP)&-((SP)+1,(SP))
(SP)&-(SP)+2
&段间返回(远返回) RET
指令的基本功能:(IP)&-((SP)),(SP)&-(SP)+2
(CS)&-((SP)),(SP)&-(SP)+2
&带立即数返回 RET N
执行操作:① 返回地址出栈(操作同段内或段间返回)
② 修改堆栈指针:(SP) ← (SP)+N
六、中断及中断返回指令
74、INT n 中断指令(interrupt),n为中断类型号
  执行操作:① 入栈保存FLAGS:(SP) ← (SP)-2,((SP)) ← (FLAGS)
       ② 入栈保存返回地址:(SP) ← (SP)-2,((SP)) ← (CS)
                  (SP) ← (SP)-2,((SP)) ← (IP)
       ③ 转中断处理程序:(IP) ← (n&4)
                 (CS) ← (n&4+2)
75、IRET 中断返回指令(return from interrupt)
  执行操作:① 返回地址出栈:(IP) ← ((SP)),(SP) ← (SP)+2
                (CS) ← ((SP)),(SP) ← (SP)+2
       ② FLAGS出栈:(FLAGS) ← ((SP)),(SP) ← (SP)+2
76、INTO 溢出则中断(中断类型为4)
  执行操作:若OF=1(有溢出),则:
       ① 入栈保存FLAGS:(SP) ← (SP)-2,((SP)) ← (FLAGS)
       ② 入栈保存返回地址:(SP) ← (SP)-2,((SP)) ← (CS)
                  (SP) ← (SP)-2,((SP)) ← (IP)
       ③ 转中断处理程序:(IP) ← (4&4)= (10H)
                 (CS) ← (4&4+2)= (12H
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 位移测量仪 的文章

 

随机推荐