实验16的目的,其实是让我们了解直接定址表是怎么储存子程序入口地址的
因为table dw sub1,sub2,sub3,sub4在debug载入之后出现一段我们看不懂的代码
我们引用一个小程序
assume cs:code
code segment
start:nop
nop
mov bx,offset s2
s2:mov ax,4c00h
int 21h
code ends
end start
在debug载入
>-------------------------------------...


- [qiangzi] 漂亮!! 02/05 17:54
- [scuzg] 补码溢出判断是汇编语言学习的一个难点,我也曾希望从原理到方法上讲清楚这样事情: http://ww 12/31 12:01
- [release_lag] 谢谢指点,明白了 12/10 11:24
- [tinyparticle] 给段代码参考下,可以看下这个程序的逻辑: assume cs:code,ds:data,es:ta 12/08 15:11
- [游客] 9494 一窍不通的一看也就记住咯 顶个顶个 12/08 11:16
- [mywiil] 博主总结的不错啊。呵呵 12/04 09:24
- [release_lag] 谢谢提醒,我那样讲不严谨,所以,我改了一些,谢谢指正 12/03 08:52
- [游客] N小于16;N刚好被16整除;还有N不能被16整除 ========= “N小于16”也属于“N 12/01 16:00
- [release_lag] 谢谢abob ,我把笔记做了修改 11/05 09:54
- [liandakun] 二进制数1111 1111转化成十进制是2的8 次方减一,而不是2的8次方吧. 10/31 11:13
- [waiwai] 你的win32教材是罗云彬的吗? 感觉学习win32有难度,而罗云彬的教材相对王爽老师的教材也 01/27 10:10
[2010-01-26 16:13] 对实验16知识点的深入
阅读全文 |
评论次数(0) |
浏览次数(668) |
所属类型(默认类型)
[2010-01-08 13:59] 第十二章检测题
<<<<<<<<<
>>>>>>>>>>>>>>>>>>>>>>>>>>>
下列指令能通过编译的是
1、 div [32]
2、 mov ax,ds:[bp]
3、 int 121h
4、 jmp 32
在执行int指令前各个寄存器的值如下
AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000
DS=B800 ES=13F4 SS=1404 CS=1404 IP=0012 NV UP EI PL NZ NA PO NC
则int...
>>>>>>>>>>>>>>>>>>>>>>>>>>>
下列指令能通过编译的是
1、 div [32]
2、 mov ax,ds:[bp]
3、 int 121h
4、 jmp 32
在执行int指令前各个寄存器的值如下
AX=1221 BX=0005 CX=0014 DX=0000 SP=0016 BP=0000 SI=0000 DI=0000
DS=B800 ES=13F4 SS=1404 CS=1404 IP=0012 NV UP EI PL NZ NA PO NC
则int...
阅读全文 |
评论次数(0) |
浏览次数(629) |
所属类型(默认类型)
[2009-12-30 16:34] OF值的判断方法
怎样判断OF的值是0还是1?
根据书本知识,如果有符号数在进行算数运算或者逻辑运算时,发生了溢出,则OF=1
反之如果有符号数在进行算数运算或者逻辑运算时,没有发生溢出,则OF=0
如何直观的来判断,是否溢出?
我们可以这样理解,如果运算得不到正确结果,则溢出,如果能得到正确结果,则没有溢出
举例:
Mov al,80h
Add al,80h
首先看结果,运行后,al=0H,如果把数据当作是有符号数时,80h是-128的补码,两个-128之和就是-256,与结果0不符,我们就说有符号数在运算时发生溢出,OF=1
再来研究下,有符号数与无符号数
同一个数据...
根据书本知识,如果有符号数在进行算数运算或者逻辑运算时,发生了溢出,则OF=1
反之如果有符号数在进行算数运算或者逻辑运算时,没有发生溢出,则OF=0
如何直观的来判断,是否溢出?
我们可以这样理解,如果运算得不到正确结果,则溢出,如果能得到正确结果,则没有溢出
举例:
Mov al,80h
Add al,80h
首先看结果,运行后,al=0H,如果把数据当作是有符号数时,80h是-128的补码,两个-128之和就是-256,与结果0不符,我们就说有符号数在运算时发生溢出,OF=1
再来研究下,有符号数与无符号数
同一个数据...
阅读全文 |
评论次数(1) |
浏览次数(1608) |
所属类型(默认类型)
[2009-12-15 16:05] 转移指令学习笔记
??转移指令的定义
可以修改IP或才同时修改CS和IP的值的指令统称转移指令
oo对于只修改IP的,又称为段内转移
比如:jmp ax
jmp short 标号
jmp near ptr 标号
jmp word ptr [bx]
oo对于同时修改CS和IP值的又称为段间转移
比如:jmp far ptr 标号
jmp dword ptr [bx]
一、有条件转移:
jmp 标号
jmp short 标号
jmp near p...
可以修改IP或才同时修改CS和IP的值的指令统称转移指令
oo对于只修改IP的,又称为段内转移
比如:jmp ax
jmp short 标号
jmp near ptr 标号
jmp word ptr [bx]
oo对于同时修改CS和IP值的又称为段间转移
比如:jmp far ptr 标号
jmp dword ptr [bx]
一、有条件转移:
jmp 标号
jmp short 标号
jmp near p...
阅读全文 |
评论次数(0) |
浏览次数(372) |
所属类型(默认类型)
[2009-12-14 14:49] 收录第十章检测题
补全程序,实现从内存1000:0处开始执行指令。
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...
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...
阅读全文 |
评论次数(0) |
浏览次数(367) |
所属类型(默认类型)
[2009-12-03 09:24] 关于and和or指令的个人看法
根据第7章,第一小节的内容,我们知道and指令和or指令
先看例子
(1)and指令:逻辑与指令
mov al,01100011B
and al,00111011B
_________________
结果: 00100011B
我们知道and,or操作对象都是二进制数据,就是1和0
经分析我们发现
1 1 0
and 1 and 0 and 0
------- -------- --------
结果:1 结果:0 结果:0
====以上形象地描...
先看例子
(1)and指令:逻辑与指令
mov al,01100011B
and al,00111011B
_________________
结果: 00100011B
我们知道and,or操作对象都是二进制数据,就是1和0
经分析我们发现
1 1 0
and 1 and 0 and 0
------- -------- --------
结果:1 结果:0 结果:0
====以上形象地描...
阅读全文 |
评论次数(2) |
浏览次数(589) |
所属类型(默认类型)
[2009-11-28 12:42] 关于程序加载和debug调试的诸多疑问(续一)
这个问题是调试问题
-----------------------
检测点6.1里面的源程序
用debug,载入后,如下
--------------------------
-r
AX=0000 BX=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B4E ES=0B4E SS=0B5E CS=0B5E IP=0010 NV UP EI PL NZ NA PO NC
0B5E:0010 B80000 MOV AX,0000
-d cs:0 f
0B5E:000...
-----------------------
检测点6.1里面的源程序
用debug,载入后,如下
--------------------------
-r
AX=0000 BX=0000 CX=002A DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B4E ES=0B4E SS=0B5E CS=0B5E IP=0010 NV UP EI PL NZ NA PO NC
0B5E:0010 B80000 MOV AX,0000
-d cs:0 f
0B5E:000...
阅读全文 |
评论次数(0) |
浏览次数(312) |
所属类型(默认类型)
[2009-11-28 11:20] 关于程序加载和debug调试的诸多疑问
第一个问题点
-----实验5编写、调试具有多个段的程序
在DOS中用debug把实验5的源程序加载,加载后如下
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B4E ES=0B4E SS=0B5E CS=0B60 IP=0000 NV UP EI PL NZ NA PO NC
0B60:0000 B85F0B MOV AX,0B5F
********************************************
查看寄存...
-----实验5编写、调试具有多个段的程序
在DOS中用debug把实验5的源程序加载,加载后如下
-r
AX=0000 BX=0000 CX=0042 DX=0000 SP=0000 BP=0000 SI=0000 DI=0000
DS=0B4E ES=0B4E SS=0B5E CS=0B60 IP=0000 NV UP EI PL NZ NA PO NC
0B60:0000 B85F0B MOV AX,0B5F
********************************************
查看寄存...
阅读全文 |
评论次数(0) |
浏览次数(296) |
所属类型(默认类型)
[2009-10-30 14:45] 第一章节内容笔记
1、CPU是通过地址总线来指定存储单元
地址总线上能传递多少个不同的信息,就表示,CPU能寻找多少 个不同的存储单元,即CPU最多可以对多少个存储单元进行存储
***如果地址总线宽度为1,那么最多能传递2个不同的信息, 即CPU最多可以对2个存储单元进行存储。。。CPU寻址 能力就是2B
***如果地址总线宽度为2,那么最多能传递4个不同的信息, 即CPU最多可以对4个存储单元进行存储。。。CPU寻址 能力就是4B
***如果如果地址总线宽度为3,那么最多能传递8个不同的信 息,即CPU最多可以对8个存储单元进行存储。。。CPU寻 ...
地址总线上能传递多少个不同的信息,就表示,CPU能寻找多少 个不同的存储单元,即CPU最多可以对多少个存储单元进行存储
***如果地址总线宽度为1,那么最多能传递2个不同的信息, 即CPU最多可以对2个存储单元进行存储。。。CPU寻址 能力就是2B
***如果地址总线宽度为2,那么最多能传递4个不同的信息, 即CPU最多可以对4个存储单元进行存储。。。CPU寻址 能力就是4B
***如果如果地址总线宽度为3,那么最多能传递8个不同的信 息,即CPU最多可以对8个存储单元进行存储。。。CPU寻 ...
阅读全文 |
评论次数(3) |
浏览次数(458) |
所属类型(默认类型)
页码数(1):
1