T单步执行 pop ax 时,出现 NTVDM CPU 遇到无效指令对话框,
请大家去下载一个DOSBox,这是一个真实模拟DOS实模式的软件,用法也很简单,用mount将你的t1.exe所在的盘加载即可,最好是把c:\加载,然后用path=c:\windows\system32,把debug做成启动路径。
这个软件非常好用,1M多,比用虚拟机好多了,很多在windows下不能使用的DOS程序均可用这个软件来执行,各位用他来调试程序应该好用。
楼主自己试过了吗?似乎不好用。
因为软件不推荐将C:\根目录加载为虚拟C盘,我是把C:\MASM加载为虚拟C盘的,并且把c...
- [hunterit] 这个题非常有意思,答案应该是8. 仔细分析了下,注意把call word ptr ds:[0EH] 02/23 10:07
- [游客] 在有问题的基础上改进的: 关键是要知道如何调试,就比较容易解决问题 assume cs:co 09/13 16:39
- [wdm] 确实是中断的原因,t命令就是一个大不中断。中断过程中,会使用但前栈来存放一些数据。这个在中断那个章节 03/14 12:50
- [游客] 谢谢xiaochong 02/27 18:00
- [xiaochong] 博主看看 勘误区中关于此检测点的介绍 http://www.asmedu.net/bbs/pa 02/27 16:11
- [study_soft] 能否请martian说多点? 第一个问题我做的时候也纳闷,似乎该在0000:0010处找4号中断源 02/26 23:12
- [study_soft] sysnap,能否说详尽些,call指令在debug状态下,怎么调试? 我又看了书的第十章,没找到答 02/26 23:06
- [study_soft] 歉意, 答案不是3,我第一次做错时写的.被系统打叉之后,想明白了原理,只是不会对它用debug. 02/26 23:01
- [study_soft] 谢谢游客提示,实验时想到这个代码里不定义堆栈段应该也可以,把相应代码屏蔽之后的确可以正确运行. 02/26 22:56
- [martian] 楼主的第一个问题的答案有问题,再仔细考虑下。 第二个检测问题没有问题 02/26 18:41
[2008-03-13 09:43] 实验3--- t1.asm 测试未完成DEBUG测试出错,提供解决办法!!!(论坛摘抄)
阅读全文 |
评论次数(1) |
浏览次数(919) |
所属类型(默认类型)
[2008-02-26 18:02] 检测11.1
(1) 3号中断源对应的中断处理程序的入口地址是:
0070:018B;每个表项占2个字,也就是4个字节
;说明:原为要求4号中断源对应的中断处理程序的入口地址,据xiaochong提示,把题目改了。
(2) 存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:N*4
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:N*4+2...
0070:018B;每个表项占2个字,也就是4个字节
;说明:原为要求4号中断源对应的中断处理程序的入口地址,据xiaochong提示,把题目改了。
(2) 存储N号中断源对应的中断处理程序入口的偏移地址的内存单元的地址为:N*4
存储N号中断源对应的中断处理程序入口的段地址的内存单元的地址为:N*4+2...
阅读全文 |
评论次数(4) |
浏览次数(684) |
所属类型(汇编作业)
[2008-02-26 13:57] 实验9
在屏幕中央显示一行welcome to masm:
正确的:
assume cs:code,ds:data
data segment
db "welcome to masm"
data ends
code segment
start:mov ax,0B800h
mov es,ax
mov ax,data
mov ds,ax
mov bx,2*80*12+80-1 ;offset of the last character
mov cx,15
s:
mov al,0111000...
正确的:
assume cs:code,ds:data
data segment
db "welcome to masm"
data ends
code segment
start:mov ax,0B800h
mov es,ax
mov ax,data
mov ds,ax
mov bx,2*80*12+80-1 ;offset of the last character
mov cx,15
s:
mov al,0111000...
阅读全文 |
评论次数(5) |
浏览次数(739) |
所属类型(汇编作业)
[2008-02-26 11:00] 一个关于debug调试call的疑问请指教
下面的程序执行完add ax,5时,ax中的数值为多少____ 3
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0EH]
add ax,2
inc ax
add ax...
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0EH]
add ax,2
inc ax
add ax...
阅读全文 |
评论次数(6) |
浏览次数(757) |
所属类型(汇编作业)
[2008-02-24 23:07] 检测点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
;ax=6,根据call的原理推断....
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
;ax=6,根据call的原理推断....
阅读全文 |
评论次数(2) |
浏览次数(860) |
所属类型(汇编作业)
[2008-02-22 18:12] 头晕了,回头再琢磨
下面的程序执行完add ax,5时,ax中的数值为多少____ 3
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0EH]
add ax,2
inc ax
add ax,5
mov a...
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start: mov ax,stack
mov ss,ax
mov sp,16
mov ds,ax
mov ax,0
call word ptr ds:[0EH]
add ax,2
inc ax
add ax,5
mov a...
阅读全文 |
评论次数(4) |
浏览次数(583) |
所属类型(默认类型)
[2008-02-22 17:23] 实验8
能正确返回。我是这么分析的:
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,0
s:nop
nop
mov di,offset s ;di为s的偏移
mov si,offset s2 ;si为s2的偏移
mov ax,cs:[si] ;
mov cs:[di],ax ;cs:[di]处指令用cs:[si]处指令替代
s0:jmp short s ;跳...
assume cs:codesg
codesg segment
mov ax,4c00h
int 21h
start:
mov ax,0
s:nop
nop
mov di,offset s ;di为s的偏移
mov si,offset s2 ;si为s2的偏移
mov ax,cs:[si] ;
mov cs:[di],ax ;cs:[di]处指令用cs:[si]处指令替代
s0:jmp short s ;跳...
阅读全文 |
评论次数(1) |
浏览次数(500) |
所属类型(汇编作业)
[2008-02-22 16:54] 检测点9.3
补全程序,利用LOOP指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在DX中。
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov cl,[bx]
mov ch,0
inc cx ;填空处
inc bx
loop s
ok:dec bx
mov dx,b...
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov cl,[bx]
mov ch,0
inc cx ;填空处
inc bx
loop s
ok:dec bx
mov dx,b...
阅读全文 |
评论次数(1) |
浏览次数(536) |
所属类型(汇编作业)
[2008-02-22 16:45] 检测点9.2
补全程序,利用JCXZ指令,实现在内存2000H段中查找第一个值为0的字节,找到后,将它的偏移地址存储在DX中。
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov cl,[bx] ;填空处
mov ch,0 ;填空处
jcxz ok ;填空处
inc bx ;填空处
jmp short s
ok:mov dx,bx
mov a...
assume cs:code
code segment
start:mov ax,2000h
mov ds,ax
mov bx,0
s:mov cl,[bx] ;填空处
mov ch,0 ;填空处
jcxz ok ;填空处
inc bx ;填空处
jmp short s
ok:mov dx,bx
mov a...
阅读全文 |
评论次数(1) |
浏览次数(634) |
所属类型(汇编作业)
[2008-02-22 16:12] 检测点9.1
(1)程序如下:
assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
若要使程序中的JMP指令执行后,CS:IP指向第一条程序的指令,在DATA段中应该定义哪些数据?
0 0 0 ;原因是jmp word ptr [bx+1]是段内转移,只需要给出偏移量。
(2)补全程序,使JMP指令执行后,CS:IP指向程序的第一条指令...
assume cs:code
data segment
?
data ends
code segment
start:mov ax,data
mov ds,ax
mov bx,0
jmp word ptr [bx+1]
code ends
end start
若要使程序中的JMP指令执行后,CS:IP指向第一条程序的指令,在DATA段中应该定义哪些数据?
0 0 0 ;原因是jmp word ptr [bx+1]是段内转移,只需要给出偏移量。
(2)补全程序,使JMP指令执行后,CS:IP指向程序的第一条指令...
阅读全文 |
评论次数(4) |
浏览次数(573) |
所属类型(汇编作业)
『 查看更多文章 』