我对汇编很新,所以请告诉我这个问题是否过于含糊不清,或者我是否需要提供更多信息。
基本上,我在dl
寄存器中存储了一些信息。 eax
,ebx
和ecx
寄存器中还存储了我想保留的值。如何在不更改其他寄存器值的情况下将dl
寄存器显示在屏幕上?
我也尝试使用int 21h
,但在使用时遇到了分段错误。
答案 0 :(得分:0)
您正在使用的环境将决定如何显示您要显示的内容。 int 21h
中断是DOS服务,因此除非您在DOS环境中工作(例如在没有加载DOS的纯BIOS环境中),否则将无法使用。如果是这种情况,您应该查看int 10h
video services - 例如int 10h AX=0Ah
。
至于保留其他寄存器的值 - 这取决于您选择显示输出的方式。我上面提到的int 10h AX=0Ah
服务需要使用AH
,AH
,BH
,BL
和CX
注册表 - 才能使用此服务必须将您的值从EAX
,EBX
和ECX
寄存器移到其他位置 - 可能是移动到其他寄存器,将它们存储到特定的内存位置,或者通过设置堆栈和{ {1}},然后在显示您的值后PUSH
将值重新输入寄存器。