汇编语言问题?

a命令,movax,2为什么ax寄存器中的内容没变?... a命令,mov ax,2
为什么ax寄存器中的内容没变?
展开
 我来答
lmqnli
2011-02-10 · TA获得超过1347个赞
知道小有建树答主
回答量:1328
采纳率:50%
帮助的人:992万
展开全部
这几道题目网上就有答案和解析 , 顺序不一样

一、能够将ax中的内容送到内存0000:0200H处的指令序列是 3 。
1、 mov ds,0
mov bx,200h
mov [bx],ax
2、 mov ax,200h
mov ds,ax
mov bx,0
mov [bx],ax

3、 mov ax,20h
mov ds,ax
mov bx,0
mov [bx],ax
4、 mov bx,20h
mov ds,bx
mov bx,0
mov [bx],ax

解析:答案1明显错误了,不能将立即数送入段寄存器;答案2也不对,将200送入ax,mov ax,ds明显将此时的地址设置为0200:0000,物理地址为2000,和0000:0200的的物理地址不一致;答案3因为题目要求将ax值送入内存,而它一开始就改变了ax的值,所以不对;答案4正确,用bx来暂存数据

二、下列说法正确的是: 4 。
1、 数据段和代码段的段地址不能相同。
2、 指令mov ax,bx执行完后bx中的值为零。
3、 一个栈段的大小可以设为任意值。
4、 当SP=0时,再次压栈将发生栈顶超界,但压栈操作有效。

解析:答案1错误,因为所谓的段,不过是人为安排的,对于计算机来说,指令和数据没有任何区别,地址可以相同;答案2错误,mov指令,是不情况原寄存器里面的值的;答案3也不对,栈段须有一个段地址,段地址不能变,只有偏移地址可以变,这个大小是有范围的;答案4正确,SP=0时,压榨,SP=SP-2,产生了超界

三、下列指令的书写正确的是: 3 。
1、 push al
2、 mov cs:[0],ds:[10]
3、 pop si
4、 mov ds:[0],2

解析:答案1错误,压堆指令一次性操作一个字;答案2错误,内存空间之间不能互相传送;答案3正确;答案4错误,不能将立即数送入内存空间

四、能够只将al中的内容压入栈的指令序列是 3 。
1、 push al
2、 pop ax
3、 mov ah,0
push ax
4、 mov ax,0
push ax

解析:答案1错误,push操作单位是字;答案2错误,题目要求的是入堆;答案3正确,先将ah清零,然后压入ax可以达到目的;答案4错误,将ax清空,然后压入,等于压入的是0

五、若将以1000H为段地址的整个段空间当作栈使用,那么寄存器SP的初始值最合理的设置是 1 。
1、 0000H
2、 0001H
3、 FFFFH
4、 FFFEH

解析:以1000H为段地址的整个段空间,偏移地址为0- FFFFH,当栈中只有1个字时,偏移地址是FFFEH,当栈为空时,SP=SP+2=FFFF+2=0000,所以选择1

六、在8086CPU系统中一个栈段的容量最大为 3 。
1、 1KB
2、 512KB
3、 64KB
4、 32GB

解析:由于8086CPU寄存器只有16位,而SP等寄存器最大变化范围就只能为0~FFFFH,即64KB了…不仅仅是栈段,所有的8086CPU里面的段都不能超越64KB
百度网友9045b38
2011-02-10 · TA获得超过1972个赞
知道小有建树答主
回答量:984
采纳率:90%
帮助的人:527万
展开全部
楼主意思不太明确。
我的理解是:
在DEBUG状态下,用A命令输入mov ax,2 后为什么ax寄存器中的内容没变?
这是因为你还没有让系统执行这条指令,执行的方法是用P或T指令。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
程序员联盟
2011-02-09 · TA获得超过1014个赞
知道小有建树答主
回答量:642
采纳率:0%
帮助的人:499万
展开全部
立即数不能直接传递给段寄存器
mov ax, x ;允许(x是变量)
mov ax, 2 ;不允许(2是立即数)

具体可以看下已有百度高人回答过的:
http://zhidao.baidu.com/question/53623299.html?fr=qrl&cid=865&index=5&fr2=query
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
成珺顿涵山
2019-07-08 · TA获得超过3804个赞
知道小有建树答主
回答量:3127
采纳率:28%
帮助的人:196万
展开全部
ExitProcess@4是系统函数,你要包含系统库的
你要用

includelib
kernel32.lib
加入要用的库的
你才开始学习汇编,最好先只用简单DOS的功能调用(ExitProcess是windows函数)
另外,英文是编程的基础,你若要学好编程,英文也要补下
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
虁邓巩笆泼勖9c
2011-02-09 · 超过31用户采纳过TA的回答
知道答主
回答量:106
采纳率:0%
帮助的人:47.2万
展开全部
别听一楼的,一楼的那位大哥,只有DS寄存器不允许值传递,也就是不能将立即数移动到DS寄存器中,我认为楼主用的是2号dos功能调用。mov ax ,2后面应该有一行int 21h,作用为显示一个字符。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式