汇编语言:pop cs,对还是错

如题所述

pop cs是错误的指令。
pop其他的段寄存器是可以的,唯独cs段寄存器不允许
运行DEBUG
-a
0ADB:0100 pop ds
0ADB:0101 pop es
0ADB:0102 pop ss
0ADB:0103 pop cs
0ADB:0104
-u 100 103
0ADB:0100 1F POP DS
0ADB:0101 07 POP ES
0ADB:0102 17 POP SS
0ADB:0103 0F DB 0F
-q
就算你象这样把指令输入进去了,反汇编出来的也不是pop cs,你执行的话也不是pop cs,而是别的指令,实际可能是把后面几个字节合起来成了一条指令但绝对不是你想要的指令,你可以在debug里试试
温馨提示:内容为网友见解,仅供参考
第1个回答  2012-04-14
POP CS这条指令在最早生产的8086CPU产品上是可行的。到后来生产的8086CPU上就不行了。因为修改CS段内存非常危险,可能导致程序崩溃。
第2个回答  2011-12-16
指令不错,使用时需小心,可能会改变正在运行的程序段,若没控制好,会使正在运行的程序转到不可知的地方。
第3个回答  2011-12-26
允许PUSH CS,但不允许POP CS
第4个回答  2011-12-16
考虑上面的分析吧

在汇编中为什么PUSH CS是正确的?但是POP CS是错误的。
在汇编程序中,通常可以通过PUSH 指令将指定寄存器内容放入堆栈中保护,也可以通过POP指令将堆栈中的内容装入寄存器,而对于代码段寄存器CS,用户程序只有PUSH CS操作,如写出POP CS,编译程序会报错。这是因为随意变更CS寄存器内容,会造成程序跑乱,很可能造成系统瘫痪。在发生程序调用时,保护现场是由CP∪...

汇编语言中哪些是错误的指令
POP CS 错误 不允许直接修改CS值 IN BX DX 错误 输入数据必须使用累加器AL或AX MOV BYTE BX 1000 ;格式错误,且超范围,应为MOV word PTR BX1000 MOV CS 1000;不允许直接修改CS值 MOV BX,OFFSET VAR[SI] 错误 VAR是内存变量,[SI]是源变址寄存器,OFFSET是取偏移量,三者不能放在一起 MOV ...

...BX,10[BX] 2.POP CS 3.JMP BYTE PTR [BX] 4.IN AL,DX(这是对的吗...
6、错误. 没有这种指令

几个汇编语言问题.高手帮忙解答下..
;有错,PUSH指令的操作数不能为立即数 10.POP CS ;有错,CS不能作为目的操作数 11.XCHG [SI],3 ;有错,XCHG指令中的操作数不能为立即数 12.MOV IP,AX ;有错,IP不能通过MOV指令改变 13.SUB [SI],[DI];有错,两内存单元不能直接操作 14.PUSH DH ;有错,PUSH指令以字为单位进行...

指出下列指令的错误! 急急急急急急急急急急急急急急急急急急急急急急...
3.POP CS ;pop指令不允许操作数是代码段段寄存器CS 4.MOV IP,AX ;ip不能作为目的操作数 5.SUB[SI],[DI] ;SUB指令不允许两个操作数都是寄存器直接寻址 6.PUSH DU ;PUSH指令不允许操作数是标识符 7.OR BL,DX ;操作数长度类型不匹配 8.AND AX,DX ;正确 9.MUL 16 ;MUL指令要求乘数有...

...PUSH CS、DIV CX、ROL AL,6 正确与否 指出错误 谢谢
MOV BX,[CX] 不能用[CX] 只能是[SI]、[DI]、[BX]、[BP]MOV DS,ES 段寄存器之间不能用MOV指令 PUSH CS 正确,可以把段寄存器压栈,CS可以做源操作数,但不能做目的操作数,出栈POP CS 是不允许 ROL AL,6 错误,当移位次数超过1的时候,必须是CL ...

汇编语言指令错误纠正
10 pop cs ;CS不能作为目的操作数,也就是说不能通过指令直接改变CS的值 11 sub [si],[di] ;两内存单元不能直接进行减法操作 12 push ah ;堆栈操作以字为单元 13 adc ax,ds ;加法指令的操作数不能为段寄存器 14 add [si],80h ;没有指定内存单元的数据类型,应该改为add byte ptr [...

汇编语言中,PUSH和POP对CS:IP有什么影响?
在中断时,系统也默认的会将一些寄存器的值压入堆栈。PUSH指令,将IP压栈,用于保存断点,SP先减2指向栈顶,再将IP(16位地址,即一个字)低八位存进低地址((SP)=IP低八位)),高八位存进高地址(SP+1)=IP高八位;POP指令的过程相反。如果是段内调用,CS是不变的,仅对IP有影响;段间...

汇编语言两条指令 push ax push ds 执行后结果是什么
汇编程开始时 push ds sub ax,ax push ax 这三条语句是为后面的ret做准备,ret即执行pop ip, pop cs,执行完ip的值为0,cs的值为ds。程序转移到程序PSP的起始地址,起始地址的前两个字节放的是int 20指令,用于返回DOS。不过不推荐这样做,现在常用 mov ax 4c00h int 21h;终止程序,返回值为...

汇编程序,错误在哪?
要求用字寄存器的指令使用了字节寄存器.如PUSH,POP指令的操作数寄存器必须是字寄存器59Illegal uer of CS register指令中错误使用了段寄存器CS.如:"MOV CS,AX"CS不能做目的操作数60Must be accumulator register要求用AX或AL的位置上使用可其他寄存器.如IN,OUT指令必须使用累加器AX或AL61Improper uer of segment ...

相似回答