做了实验12和实验13,除了教材上强调的对中断过程的理解以外,还有个问题需要理清思路。
实验12中,那个除法错中断,用T命令无法跟踪到中断例程中;而实验13中执行int则可以。
除法错中断,是在单步执行div指令时发生的。单步执行,将TF清零,执行指令,显示相关寄存器的值以及下一条将要执行的指令,接着暂停执行,等待输入其他命令。在执行指令过程中出现除法错中断,则后面的显示及等待都不再执行,而转去执行除法错中断例程。这个过程中,没有机会将TF置1,所以连续执行,直到除法错中断例程执行结束。
而int指令的单步执行,则能够正常执行完单步执行的所有操作,转到中断例程后,暂停执行,从而能够继续单...
- [游客] 感谢 11/15 22:10
- [游客] 把:DD 5937000,改成:DD 4294967295,你的错误,立刻就暴露出来。呵呵 05/19 18:30
- [游客] 计算人均时,是DD型除以DW型。把DD型的最大值代进去,你的程序,就溢出了。 05/19 18:28
- [游客] 注意不溢出的除法。 05/19 18:25
- [游客] 老师好啊~ 06/28 11:01
- [longphui] 谢谢 09/03 20:10
- [longphui] 谢谢 09/03 16:23
- [longphui] 谢谢 09/02 15:26
- [longphui] 谢谢 09/02 09:13
- [sissim] 恩恩,谢谢指正 01/11 18:24
- [even3] 亲,你好。。。这边有一个汇编语言程序,但是就是不知道哪里出了问题,问了很多人,都不知道想麻烦您一下, 05/16 20:48
- [mcjfo] 楼主可以帮我解决这个问题吗?谢谢! 为什么它会跳过JMP DD 指令不执行啊 小弟搞了好久抖没 06/08 06:50
[2010-02-16 11:02] 跟踪到中断例程中
阅读全文 |
评论次数(0) |
浏览次数(578) |
所属类型(一己之见)
[2010-02-16 10:30] 第13章检测题
执行n号中断源对应的中断服务程序,CS,IP的内容应被修改为:
1、(IP) = (n*4+2) (CS) = (n*4)
2、(IP) = (n*2+2) (CS) = (n*2)
3、(IP) = (n*4) (CS) = (n*4+2)
4、(IP) = (n*2) (CS) = (n*2+2)
这道题选3,没什么好说的。
关于ret 和 iret下列说法错误的是
1、 ret和iret都改变标志寄存器的值
2、 ret不改变cs的值,iret改变cs的值
3、 ret和iret都改变sp的值
4、 ret和iret都改变...
1、(IP) = (n*4+2) (CS) = (n*4)
2、(IP) = (n*2+2) (CS) = (n*2)
3、(IP) = (n*4) (CS) = (n*4+2)
4、(IP) = (n*2) (CS) = (n*2+2)
这道题选3,没什么好说的。
关于ret 和 iret下列说法错误的是
1、 ret和iret都改变标志寄存器的值
2、 ret不改变cs的值,iret改变cs的值
3、 ret和iret都改变sp的值
4、 ret和iret都改变...
阅读全文 |
评论次数(0) |
浏览次数(693) |
所属类型(检测题)
[2010-02-16 09:46] 实验13 (3)
程序如下:
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset s2,offset s3,offset s4
row: db 2,4,6,8
...
assume cs:code
code segment
s1: db 'Good,better,best,','$'
s2: db 'Never let it rest,','$'
s3: db 'Till good is better,','$'
s4: db 'And better,best.','$'
s: dw offset s1,offset s2,offset s3,offset s4
row: db 2,4,6,8
...
阅读全文 |
评论次数(0) |
浏览次数(564) |
所属类型(汇编作业)
[2010-02-16 09:40] 实验13 (2)
中断例程如下:
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset s
mov ax,0
mov es,ax
mov di,200h
mov cx,offset send-offset s
cld
rep movsb
mov bx,7ch*...
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset s
mov ax,0
mov es,ax
mov di,200h
mov cx,offset send-offset s
cld
rep movsb
mov bx,7ch*...
阅读全文 |
评论次数(0) |
浏览次数(589) |
所属类型(汇编作业)
[2010-02-16 09:20] 实验13 (1)
程序如下:
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset s
mov ax,0
mov es,ax
mov di,200h
mov cx,offset send-offset s
cld
rep movsw
;以上为复制中断例程到0:200h
...
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset s
mov ax,0
mov es,ax
mov di,200h
mov cx,offset send-offset s
cld
rep movsw
;以上为复制中断例程到0:200h
...
阅读全文 |
评论次数(0) |
浏览次数(606) |
所属类型(汇编作业)
[2010-02-13 21:54] 检测点13.1、13.2
检测点13.1
(1)用7ch中断例程实现loop的功能,所能进行的最大转移位移是-32768~32767。这个位移范围是由bx的位数决定的。
(2)7ch中断例程的安装程序如下:
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset mj
mov ax,0
mov es,ax
mov di,200h
cld
...
(1)用7ch中断例程实现loop的功能,所能进行的最大转移位移是-32768~32767。这个位移范围是由bx的位数决定的。
(2)7ch中断例程的安装程序如下:
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset mj
mov ax,0
mov es,ax
mov di,200h
cld
...
阅读全文 |
评论次数(0) |
浏览次数(593) |
所属类型(汇编作业)
[2010-02-12 23:16] 第12章
真是晕了,连续两章都没有顺利通过检测点。
这次的三个题目:
下列指令能通过编译的是 2
1、div [32]
2、mov ax,ds:[bp]
3、int 121h
4、jmp 32
这题应该没错吧,第一条类型不明确字除以字节还是双字除以字,第三条终端类型号超出256了,第4条类型不明确不知道是段内还是段间的转移。
在执行int指令前各个寄存器的值如下 4
AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000
DS=B800 ES=13F4 SS=1404 C...
这次的三个题目:
下列指令能通过编译的是 2
1、div [32]
2、mov ax,ds:[bp]
3、int 121h
4、jmp 32
这题应该没错吧,第一条类型不明确字除以字节还是双字除以字,第三条终端类型号超出256了,第4条类型不明确不知道是段内还是段间的转移。
在执行int指令前各个寄存器的值如下 4
AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000
DS=B800 ES=13F4 SS=1404 C...
阅读全文 |
评论次数(0) |
浏览次数(616) |
所属类型(检测题)
[2010-02-12 21:03] 实验12
程序如下(shy12.asm):
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb
...
assume cs:code
code segment
start: mov ax,code
mov ds,ax
mov si,offset do0
mov ax,0
mov es,ax
mov di,200h
mov cx,offset do0end-offset do0
cld
rep movsb
...
阅读全文 |
评论次数(0) |
浏览次数(578) |
所属类型(汇编作业)
[2010-02-12 16:13] 检测点12.1
(1)用debug查看内存,情况如下:
0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序的入口地址为:0070:018B
中断向量表中每个表项占两个字,那么3号中断源对应的中断处理程序入口地址应该存放在0000:000C单元中。高地址字存放段地址,为0070;低地址字存放偏移地址,为018B。
(2)存储N号中断源对应的中断处理程序入口地址的偏移地址的内存单元的地址为0000:4*N。
存储N号中断源对应的中断处理程序入口地址的段地址的内存单元的地址为0000:4*N+2。...
0000:0000 68 10 A7 00 8B 01 70 00-16 00 9D 03 8B 01 70 00
则3号中断源对应的中断处理程序的入口地址为:0070:018B
中断向量表中每个表项占两个字,那么3号中断源对应的中断处理程序入口地址应该存放在0000:000C单元中。高地址字存放段地址,为0070;低地址字存放偏移地址,为018B。
(2)存储N号中断源对应的中断处理程序入口地址的偏移地址的内存单元的地址为0000:4*N。
存储N号中断源对应的中断处理程序入口地址的段地址的内存单元的地址为0000:4*N+2。...
阅读全文 |
评论次数(0) |
浏览次数(605) |
所属类型(汇编作业)
[2010-02-12 00:27] 第11章
第11章检测题,居然错了两道。唉,两小时后再说吧。
检测题如下:
下列指令对标志寄存器内容产生影响,但不会改变参与其执行过程的其它寄存器内容的是______。
1、loop s
2、cmp cx,0
3、jcxz s
4、div cx
这题选2,没问题
对于Intel8086cpu标志寄存器的说法正确的是_____。
1、cpu执行每一条指令都有可能改变标志寄存器的内容。
2、无符号数运算的进位或借位情况由cf标志位记录,有符号数运算的溢出情况由of标志位记录。
3、当前指令对标志寄存器的影响为此指令的执行提供了所需的依据,对后续指令没有...
检测题如下:
下列指令对标志寄存器内容产生影响,但不会改变参与其执行过程的其它寄存器内容的是______。
1、loop s
2、cmp cx,0
3、jcxz s
4、div cx
这题选2,没问题
对于Intel8086cpu标志寄存器的说法正确的是_____。
1、cpu执行每一条指令都有可能改变标志寄存器的内容。
2、无符号数运算的进位或借位情况由cf标志位记录,有符号数运算的溢出情况由of标志位记录。
3、当前指令对标志寄存器的影响为此指令的执行提供了所需的依据,对后续指令没有...
阅读全文 |
评论次数(0) |
浏览次数(720) |
所属类型(检测题)