有人可以解释这三个指令的功能吗?
ORG 1000H
MOV AX,CS
MOV DS,AX
我知道理论上的代码、数据和额外段是什么,但是:
它们是如何在这个程序中实现的?
为什么整个段移动到另一个段?(
MOV AX,CS
和MOV DS,AX
)
这两条指令实际上是做什么的?
我可以理解这段代码中所有其他指令的含义,除了突出显示的 3 条指令。
(程序运行良好。它接受输入直到 0 被击中——有 amov ah,01h
和 an int 21h
,然后它比较al
,'0'
如果al
是'0'
,它跳到last
,否则它跳到back
。)
ASSUME CS:CODE
CODE SEGMENT
ORG 1000H
MOV AX,CS
MOV DS,AX
BACK:
MOV AH,01H
INT 21H
CMP AL,'0'
JZ LAST
JMP BACK
LAST:
MOV AX,4C00H
INT 21H
CODE ENDS
END
(编者注:.com
程序在 offset 加载100h
,所有段寄存器设置为彼此相等。 org 1000h
可能是错字,org 100h
因为这看起来像一个.com
程序。这个程序不会中断,因为它不使用任何绝对地址,只使用相对地址跳跃。)