1。in,out端口读写指令
in al,80h;从外设80h端口地址处向al写数据,输入
out 80h,al;将al中数据写入外设80h端口地址处,输出
2。al,ax来存放要与端口交涉的数据,8位,16位
3。逻辑移位指令:
shl:逻辑左移
shr:逻辑右移
格式:shl al,1;shl al,cl(移位数大于1);移出位存于cf中...
- [游客] 以前遇到过。看了讲解,明白不少。 如果我们把断点设置到int 21以后就没事了? 04/09 12:48
- [游客] 这样的问题还是发到论坛好,在这里很容易就被埋没了,嘿嘿~ 12/26 15:17
- [游客] debug下默认是16进制的,也就是说用a命令输入mov ax,354 ,结果变成ax=3 12/26 15:14
- [游客] 支持。 12/22 21:21
- [游客] 博主厉害。 12/22 21:18
- [游客] 博主的第一小题有问题吧。 存放位移的为一个十六位寄存器,它所能表示的最大值为65535,所以最大转 12/22 21:15
- [游客] 检测点11.2 add al,80h ;cf=1,of=1,sf=1,zf=1,pf=1 12/22 20:50
- [mouse] 我前两天也调了半天才把这个弄出来,还费了半天劲精简,我看博主的代码也是可以再精简点的~ 12/22 20:36
- [mouse] 写的真好,我的还没做出来呢 呜呜~~ 12/22 20:33
- [游客] 书上的代码基本都全了,没有问题,自己可以验证后把结果也贴上来~_~ 12/22 20:27
[2007-12-04 13:51] 14章学习笔记
阅读全文 |
评论次数(2) |
浏览次数(978) |
所属类型(学习笔记)
[2007-11-22 22:52] 第十一章学习笔记
1。标志寄存器
zf:零标志位;pf:偶标志位;sf:符号标志位;cf:进位标志位;of:溢出标志位
2。cf无符号对象,of考虑符号。
3。abc指令
格式: abc 操作对象1,操作对象2
功能:操作对象1=操作对象1+操作对象2+cf
4。sbb同理
5。cmp指令:比较指令
6。串传送指令——movsb:
mov es:[di],byte ptr ds:[si]
如果df=0,则inc si,inc di
如果df=1,则dec si,dec di...
zf:零标志位;pf:偶标志位;sf:符号标志位;cf:进位标志位;of:溢出标志位
2。cf无符号对象,of考虑符号。
3。abc指令
格式: abc 操作对象1,操作对象2
功能:操作对象1=操作对象1+操作对象2+cf
4。sbb同理
5。cmp指令:比较指令
6。串传送指令——movsb:
mov es:[di],byte ptr ds:[si]
如果df=0,则inc si,inc di
如果df=1,则dec si,dec di...
阅读全文 |
评论次数(0) |
浏览次数(604) |
所属类型(学习笔记)
[2007-11-14 16:35] 第10章学习笔记
1。执行ret指令:
(1).(ip)=((ss)*16+(sp))
(2).(sp)=(sp)+2
2。执行retf指令:
(1) (ip)=((ss)*16+(sp))
(2) (sp)=(sp)+2
(3) (cs)=((ss)*16+(sp))
(4) (sp)=(sp)+2
3。执行call指令:(保护现场?,非短转移)
指令格式:
call 标号;call far ptr 标号;
call 16位reg;
call word ptr 内存单元地址;
call dword ptr 内存单元地址;
(1)将“当前”(call指令下条指令)的ip或cs...
(1).(ip)=((ss)*16+(sp))
(2).(sp)=(sp)+2
2。执行retf指令:
(1) (ip)=((ss)*16+(sp))
(2) (sp)=(sp)+2
(3) (cs)=((ss)*16+(sp))
(4) (sp)=(sp)+2
3。执行call指令:(保护现场?,非短转移)
指令格式:
call 标号;call far ptr 标号;
call 16位reg;
call word ptr 内存单元地址;
call dword ptr 内存单元地址;
(1)将“当前”(call指令下条指令)的ip或cs...
阅读全文 |
评论次数(0) |
浏览次数(330) |
所属类型(学习笔记)
[2007-11-13 13:16] 第9章学习笔记
1。转移指令
段内转移:只修改ip;
段间转移:同时修改cs和ip;
短转移:ip修改范围-128~127(位移量8位)
近转移:ip修改范围-32768~32767(位移量16位)
无条件转移指令
条件转移指令
循环指令
过程
中断
2。offset
offset s;取标号s的偏移地址
(利用标号可以某条指令的偏移地址)
3。jmp指令
格式:
jmp short 标号;(段内短转移)
jmp near ptr 标号;(段内近转移)
jmp far ptr 标号;(段间转移/远转移)
4。jmp对应的机器码:EB **(“**”表示位移量);EB ^...
段内转移:只修改ip;
段间转移:同时修改cs和ip;
短转移:ip修改范围-128~127(位移量8位)
近转移:ip修改范围-32768~32767(位移量16位)
无条件转移指令
条件转移指令
循环指令
过程
中断
2。offset
offset s;取标号s的偏移地址
(利用标号可以某条指令的偏移地址)
3。jmp指令
格式:
jmp short 标号;(段内短转移)
jmp near ptr 标号;(段内近转移)
jmp far ptr 标号;(段间转移/远转移)
4。jmp对应的机器码:EB **(“**”表示位移量);EB ^...
阅读全文 |
评论次数(2) |
浏览次数(577) |
所属类型(学习笔记)
[2007-11-08 10:08] 第8章学习笔记
1。只有bx,bp,di,si可以用在[...]中进行内存寻址其中
mov ax,[bx+bp];错误
mov ax,[si+di];错误
2。mov ax,[bp];mov ax,[bp+di/si+idata];段地址在ss中
而 mov ax,[bx];mov ax,[di];mov ax,[si];段地址在ds中
3。立即数(idata):指令执行前在cpu的指令缓冲器中
寄存器:指令要处理的数据在寄存器中
段地址(SA),偏移地址(EA):指令要处理的数据在内存中
4。寻址方式:
直接寻址:[idata];
寄存器间接寻址:[bx];
寄存器...
mov ax,[bx+bp];错误
mov ax,[si+di];错误
2。mov ax,[bp];mov ax,[bp+di/si+idata];段地址在ss中
而 mov ax,[bx];mov ax,[di];mov ax,[si];段地址在ds中
3。立即数(idata):指令执行前在cpu的指令缓冲器中
寄存器:指令要处理的数据在寄存器中
段地址(SA),偏移地址(EA):指令要处理的数据在内存中
4。寻址方式:
直接寻址:[idata];
寄存器间接寻址:[bx];
寄存器...
阅读全文 |
评论次数(0) |
浏览次数(387) |
所属类型(学习笔记)
[2007-11-07 10:46] 第7章学习笔记
1。and指令:实现将操作对象相应位设为0,其它位不变;
or指令:实现将操作对象相应位设为1,其他位不变。
2。mov ax,[bx+idata];mov ax,idata[bx];mov [bx].idata寄存器相对寻址
3。c语言定位方式:a[i],b[i]
汇编语言定位方式:0[bx],5[bx]
C,C++规定,16进制数必须以 0x开头
4。si:源变址寄存器
di:目标变址寄存器(两者与bx功能相近)
5。mov ax,[bx+si];mov ax,[bx+di];基址加变址寻址
mov ax,[bx+bp];错误
mov ax,[si+di];错误
6。...
or指令:实现将操作对象相应位设为1,其他位不变。
2。mov ax,[bx+idata];mov ax,idata[bx];mov [bx].idata寄存器相对寻址
3。c语言定位方式:a[i],b[i]
汇编语言定位方式:0[bx],5[bx]
C,C++规定,16进制数必须以 0x开头
4。si:源变址寄存器
di:目标变址寄存器(两者与bx功能相近)
5。mov ax,[bx+si];mov ax,[bx+di];基址加变址寻址
mov ax,[bx+bp];错误
mov ax,[si+di];错误
6。...
阅读全文 |
评论次数(1) |
浏览次数(328) |
所属类型(学习笔记)
[2007-11-06 13:17] 第6章学习笔记
1。程序取得所需空间的方法:
a.在加载程序的时候为程序分配:如通过定义段来获取
b.程序执行的过程中向系统申请。
2。dw:定义字型数据。
3。end start;(start为标号)end定义了程序的入口在start标记的位置。
4。mov ax,data;(data段名)正确
mov ds,data;错误...
a.在加载程序的时候为程序分配:如通过定义段来获取
b.程序执行的过程中向系统申请。
2。dw:定义字型数据。
3。end start;(start为标号)end定义了程序的入口在start标记的位置。
4。mov ax,data;(data段名)正确
mov ds,data;错误...
阅读全文 |
评论次数(1) |
浏览次数(418) |
所属类型(学习笔记)
[2007-11-05 08:44] 第5章学习笔记
1。mov ax,[0];将一字单元的内容送入ax
mov al,[0];将一字节单元的内容送入al
描述内存单元:内存单元地址,内存单元长度。
mov ax,[bx];mov al,[bx];
2。(ax),(20000h),((ds)*16+(bx));正确
(2000h),(2000:0),((ds):1000h);错误
3。loop指令:
格式:loop 标号
执行步骤:(cx)=(cx)-1;判断cx中值,不为0转至标号处执行,为0执行下条指令。
cx中存放循环次数
5。在汇编源程序中,数据不能以字母开头,a000h,应改为0a000h
6。de...
mov al,[0];将一字节单元的内容送入al
描述内存单元:内存单元地址,内存单元长度。
mov ax,[bx];mov al,[bx];
2。(ax),(20000h),((ds)*16+(bx));正确
(2000h),(2000:0),((ds):1000h);错误
3。loop指令:
格式:loop 标号
执行步骤:(cx)=(cx)-1;判断cx中值,不为0转至标号处执行,为0执行下条指令。
cx中存放循环次数
5。在汇编源程序中,数据不能以字母开头,a000h,应改为0a000h
6。de...
阅读全文 |
评论次数(1) |
浏览次数(311) |
所属类型(学习笔记)
[2007-11-04 12:40] 第4章学习笔记
1。伪指令:没有对应的机器代码,由编译器执行,指导编译器工作。
汇编指令:有对应的机器代码,最终由cup执行。
标号:如 段名
2。设置段:
段名 segment
...
段名 ends
汇编程序结束: end
“假设”关联:
assum 段寄存器:段名
程序返回:
mov ax,4c00h
int 21h
3。编程——1.asm——编译——1.obj——连接——1.exe——加载—
(edit) ...
汇编指令:有对应的机器代码,最终由cup执行。
标号:如 段名
2。设置段:
段名 segment
...
段名 ends
汇编程序结束: end
“假设”关联:
assum 段寄存器:段名
程序返回:
mov ax,4c00h
int 21h
3。编程——1.asm——编译——1.obj——连接——1.exe——加载—
(edit) ...
阅读全文 |
评论次数(2) |
浏览次数(322) |
所属类型(学习笔记)
[2007-11-01 12:34] 第3章学习笔记
1。一个字=2字节,高位字节存放在高地址单元,低位字节存放在低地址单元中。字单元:n地址字单元存放字型数据为n地址和n+1地址数据组成的字。
2。ds:存放数据的段地址,mov al,[0] ;将ds和偏移地址[0]指向的内存地址的数据送如al中。同理:mov [0],ax;mov [0],cs;mov [0],ds;
3。mov cs,ax ;错误
mov ds,ax ;正确
mov ax,ds ;正确
mov cs,1300;错误
mov ds,1300;错误
mov ip,1300;错误
4.栈:ss:sp指向栈顶,栈越界,push,...
2。ds:存放数据的段地址,mov al,[0] ;将ds和偏移地址[0]指向的内存地址的数据送如al中。同理:mov [0],ax;mov [0],cs;mov [0],ds;
3。mov cs,ax ;错误
mov ds,ax ;正确
mov ax,ds ;正确
mov cs,1300;错误
mov ds,1300;错误
mov ip,1300;错误
4.栈:ss:sp指向栈顶,栈越界,push,...
阅读全文 |
评论次数(1) |
浏览次数(353) |
所属类型(学习笔记)