几个简单的汇编语言问题
1.判断下列汇编语句的正确性并说明原因MOV[AX],BHMOV[SP],AXOUT10H,CLCMP36H,AL2.标号作符号地址使用,出现在操作数域时,语句JMPBE...
1.判断下列汇编语句的正确性并说明原因
MOV [AX],BH
MOV [SP],AX
OUT 10H,CL
CMP 36H,AL
2.标号作符号地址使用,出现在操作数域时,语句JMP BEGIN 中符号BEGIN表示的是目标地址;而在语句LOOP BEGIN中却是同时表示目标地址和偏移地址,它们之间有什么区别吗?为什么要有这样的区别呢?
3。段边界定义SEGMENT.....END和过程定义PROC...ENDP和模块定义NAME....END有什么区别?谢谢
间接寻址只能用bx,dx,si,di吗?out和in的操作只能用ax,dx吗? 展开
MOV [AX],BH
MOV [SP],AX
OUT 10H,CL
CMP 36H,AL
2.标号作符号地址使用,出现在操作数域时,语句JMP BEGIN 中符号BEGIN表示的是目标地址;而在语句LOOP BEGIN中却是同时表示目标地址和偏移地址,它们之间有什么区别吗?为什么要有这样的区别呢?
3。段边界定义SEGMENT.....END和过程定义PROC...ENDP和模块定义NAME....END有什么区别?谢谢
间接寻址只能用bx,dx,si,di吗?out和in的操作只能用ax,dx吗? 展开
3个回答
展开全部
1.判断下列汇编语句的正确性并说明原因
MOV [AX],BH ;错,AX不能加方括号来访问地址
MOV [SP],AX ;错,SP不能加方括号
OUT 10H,CL ;错,OUT指令中源操作数只能是AX或AL
CMP 36H,AL ;错,CMP指令中目的操作数不能为立即数
2.标号作符号地址使用,出现在操作数域时,语句JMP BEGIN 中符号BEGIN表示的是目标地址;而在语句LOOP BEGIN中却是同时表示目标地址和偏移地址,它们之间有什么区别吗?为什么要有这样的区别呢?
JMP指令可以访问内存的任何空间,LOOP则只能访问—128~+127之间的内存空间,所以是相对位移。
3。段边界定义SEGMENT.....END和过程定义PROC...ENDP和模块定义NAME....END有什么区别?谢谢问题补充:
这个要去了解段、过程和模块的区别。
间接寻址只能用bx,dx,si,di吗?out和in的操作只能用ax,dx吗?
间接寻址只能用bx,dx,si,di。out和in的操作中只能用ax,al,dx和0~255的立即数端口地址
MOV [AX],BH ;错,AX不能加方括号来访问地址
MOV [SP],AX ;错,SP不能加方括号
OUT 10H,CL ;错,OUT指令中源操作数只能是AX或AL
CMP 36H,AL ;错,CMP指令中目的操作数不能为立即数
2.标号作符号地址使用,出现在操作数域时,语句JMP BEGIN 中符号BEGIN表示的是目标地址;而在语句LOOP BEGIN中却是同时表示目标地址和偏移地址,它们之间有什么区别吗?为什么要有这样的区别呢?
JMP指令可以访问内存的任何空间,LOOP则只能访问—128~+127之间的内存空间,所以是相对位移。
3。段边界定义SEGMENT.....END和过程定义PROC...ENDP和模块定义NAME....END有什么区别?谢谢问题补充:
这个要去了解段、过程和模块的区别。
间接寻址只能用bx,dx,si,di吗?out和in的操作只能用ax,dx吗?
间接寻址只能用bx,dx,si,di。out和in的操作中只能用ax,al,dx和0~255的立即数端口地址
追问
问题2中,你说“LOOP则只能访问—128~+127之间的内存空间”,但是这样怎么表示“目的地址”呢?目的地址是20位,偏移地址是16位,是吗?
追答
目的地址是20位,不过它是由段地址和偏移地址来得到,段地址和偏移地址都是16位,20位的物理地址=段地址*10H+偏移地址,LOOP指令是程序段的,所以它的段地址是在CS中,偏移地址由LOOP指令的偏移地址加后面标号的偏移量得到。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询