检测点10.1
补全程序,实现从内存1000:0000处开始执行指令。
assume cs:code
stack segment
db 16 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ax,?
push ax
mov ax,?
push ax
retf
code ends
end start
分析:1000H、0
检测点10.2
下面的程序执行后,ax中的数值为多少?
内存地址 机器码 汇编指令
1000:0 b8 00 00 mov ax,0
1000:3 e8 01 00 call s
1000:6 40 inc ax
1000:7 58 s:pop ax
分析:执行call s指令后,ss:sp 06 00。
从而,(ax)=6。
检测点10.3
ax中的数值为多少?
分析:执行call far ptr s指令后,ss:sp 08 00 00 10。
从而,(ax)=8+8+1000H=1010H
检测点10.4
ax中的数值为多少?
分析:执行call ax指令后,ss:sp 05 00。
从而,(ax)=6+5=bH
检测点10.5
(1)下面的程序执行后,ax中的数值为多少?
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,stack ;0
mov ss,ax ;3
mov sp,16 ;5
mov ds,ax ;8
mov ax,0 ;a
call word ptr ds:[0eH] ;dh
inc ax ;11h
inc ax ;12h
inc ax ;13h
code ends
end start
分析:
call word ptr ds:[0eH]指令执行前,(ip)=a ,
执行此指令后,ds:08 0f-- 00 00 00 00 11 00 (cs)
从而cs没变,(ip)=11H。
因此,ax=3。
(2)下面的程序执行后,ax和bx中的数值为多少?
经过分析可得:(ax)=0,(bx)=0。
--------------------------------------
修改下:(ax)=1,(bx)=0。
--------------------------------------
- [游客] 厉害,自己独立完成课设一,这本书就掌握多一半了。 10/24 16:23
- [tolearn] 嗯, 10/19 07:11
- [huang425618] 同学,检测10.5第二题你错了哦,ax的值是1哦,在 call dword ptr ss:[0]下 10/18 22:42
- [lk524849699] 这mov ax,4c00h int 21h 10/15 22:37
- [tolearn] 哪里? 10/15 22:29
- [lk524849699] 这不是有输出啊,还说不明白! 10/15 22:19
- [tolearn] 修改了一下 10/09 17:15
- [tolearn] 哦,对!谢谢提醒! 10/09 15:30
- [mess] 十六进制,别忘了写H。 10/09 15:11
- [mess] 等做了这章的实验,博主可以自己用debug验证下 ^_^ 10/09 15:10
- [tolearn] 最近学习比较紧,汇编进程就拉下来了 10/27 10:30
- [tolearn] 希望大家看完之后能够指点一二! 10/19 08:50
- [tolearn] 没人评论的日子我该怎么过…… 10/18 20:25
- [tolearn] 汇编,我已经感觉到你的强大了! 10/15 21:31
- [tolearn] 郁闷的网,检测到一半断线, 10/15 09:35
- [tolearn] 多实践,多思考,多看论坛。 牙好,胃好,身体倍棒! 10/11 20:13
- [tolearn] 汇编,值得去学习! 10/10 12:15
[ huang425618 发表于 2010-10-18 22:42 ]
同学,检测10.5第二题你错了哦,ax的值是1哦,在
call dword ptr ss:[0]下面紧接的是 nop 执行的时候
psuh cs push ip 000c-000d 是 0019 这时候ip是 nop 的地址,偏移地址是0019哦 不是1a 所以ax=1
[ tolearn 发表于 2010-10-19 07:11 ]
嗯,