关于汇编指令的一些问题 ..
先看下代码DATASEGMENTBUFDB50DB?DB50DUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATAKEY_INPRO...
先看下代码
DATA SEGMENT
BUF DB 50
DB?
DB 50 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
KEY_IN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
..
..
RET
KEY_IN ENDP
CODE ENDS
END KEY_IN
中间没什么信息,不是疑问的重点 ...就没写。
这里面的 PROC FAR 是什么意思?什么时候才用到它?
还有后面接下来的PUSH DS 为什么在开始的地方将DS压栈呢?而且后面也没有POP操作啊 ... 展开
DATA SEGMENT
BUF DB 50
DB?
DB 50 DUP(?)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
KEY_IN PROC FAR
PUSH DS
MOV AX,0
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,BUF
MOV AH,0AH
INT 21H
..
..
RET
KEY_IN ENDP
CODE ENDS
END KEY_IN
中间没什么信息,不是疑问的重点 ...就没写。
这里面的 PROC FAR 是什么意思?什么时候才用到它?
还有后面接下来的PUSH DS 为什么在开始的地方将DS压栈呢?而且后面也没有POP操作啊 ... 展开
展开全部
PROC 是函数(子程序 or 过程 好多种说法)定义的关键字(伪指令)
FAR是 过程的 属性
相应的还有NERR属性,NEAR表示近,FAR表示远
区别就是 FAR属性的过程能被不同的段调用而NEAR只能在该段被调用(细节上是分配的这个函数名的存储空间大小不一样,NEAR是8位,FAR是16位,16位即可寻址到整个1M物理内存,故能在不同的段间调用)
有push 不一定要有pop
ret 指令做的过程是pop ip
pop ds
懂意思没?
意思是 ret的时候 程序转到DS:0的地方去执行了(那个0 是上面push进去的ax,值为0)
DS:0 这个地方存着数据CD20 对应的汇编代码是 int 20H
这条哦指令跟 MOV AH, 4CH
INT 21H
效果一样 都可以用了结束程序
FAR是 过程的 属性
相应的还有NERR属性,NEAR表示近,FAR表示远
区别就是 FAR属性的过程能被不同的段调用而NEAR只能在该段被调用(细节上是分配的这个函数名的存储空间大小不一样,NEAR是8位,FAR是16位,16位即可寻址到整个1M物理内存,故能在不同的段间调用)
有push 不一定要有pop
ret 指令做的过程是pop ip
pop ds
懂意思没?
意思是 ret的时候 程序转到DS:0的地方去执行了(那个0 是上面push进去的ax,值为0)
DS:0 这个地方存着数据CD20 对应的汇编代码是 int 20H
这条哦指令跟 MOV AH, 4CH
INT 21H
效果一样 都可以用了结束程序
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询