汇编学习杂记(9~13章)

本文介绍了8086汇编语言中的补码表示法,8位和16位有符号数的范围,并详细讲解了显示缓冲区的布局。此外,还探讨了汇编语言中的转移指令,包括短转移、近转移和远转移,以及条件转移指令。文章进一步阐述了循环指令和子程序设计的标准框架,并详细解析了8086CPU的标志寄存器,包括零标志位、奇偶标志位、符号标志位、进位标志位和溢出标志位,以及如何使用这些标志进行条件判断和比较。最后,介绍了中断处理程序的执行流程和中断向量表。
摘要由CSDN通过智能技术生成

补码(8位有符号数范围 -128 ~ 127 , 16位有符号数范围 -32768 ~ 32767)
最高位为1,表示负数;
正数补码取反加1后,为其对应的负数补码;负数补码取反加1后,为其绝对值.
例:1的补码:00000001b,取反加1后为:11111111b,表示-1;
10000000b,取反加1后为:10000000b,大小为128,所以这个码就表示-128

 

显示缓冲区(80 * 25 每行80个字符一共25行 一共分为8页 B8000H ~ BFFFFH)
第一页:B800:0000 ~ B800:0F9F (0 ~ 3999)
000 ~ 09F 对应第0行(80个字符占位160个字符) (0 ~ 159)
0A0 ~ 13F 对应第1行(160 ~ 319)
140 ~ 1DF 对应第2行
F00 ~ F9F 对应第24行
一个字符占两个字节,低位存放ASCII码.高位存放属性
00 ~ 01 对应第0列
02 ~ 03 对应第1列
9E ~ 9F 对应第79列
属性字节的格式: 7   6   5   4             3     2   1   0
R:红色             BL  R   G   B             I      R   G   B
G:绿色            闪烁 ~~~~~~背景 高亮 ~~~~~~前景
B:蓝色

 

offset 伪指令,功能是取得标号的偏移地址,如: start:mov ax,offset start 相当于mov ax,0
计算代码长度 mov ax,offset 1 - offset 0
           0:需要确定长度的代码段
           1:可以是代码段也可以写个空白nop

 

转移指令
只修改IP时,称为 段内转移,比如: jmp ax (用AX的值为IP赋值)
同时修改CS和IP时,称为 段间转移,比如:jmp 1000:0
根据范围又可分为:短转移IP修改范围(-128 ~ 127) 近转移IP修改范围(-32768 ~ 32767)

 

jmp short 标号 (转到标号处执行指令) short 指明是段内短转移(功能表示为:(IP)=(IP)+8位位移)
8位位移="标号"处地址 - JMP指令后第一个字节的地址
short指明此处的为8位位移(位移范围-128 ~ 127,用补码表示)

 

jmp near ptr 标号 (段内近转移)(功能表示为:(IP)=(IP)+16位位移)

jmp far ptr 标号 (段间转移 也叫 远转移)
(功能表现为:(CS)=标号所在段的段地址;(IP)=标号所在段中的偏移地址)
例:0BBD:0006 EA0B01BD0B  JMP 0BBD:010B

jmp word ptr 内存单元地址(段内转移)
jmp dword ptr 内存单元地址(段间转移)( (CS)=(内存单元地址+2) (IP)=(内存单元地址) )

 

有条件转移指令(所有的有条件转移指令都是短转移"-128 ~ 127")
jcxz 标号 (如果(cx)=0,转移到标号处执行,否则程序向下执行)
相当于 if((cx)==0)jmp short 标号;

 

循环指令(所有的循环指令都是短转移)
loop 标号 ((cx)=(cx)-1,如果(cx)不等于0,转移到标号处执行)
操作流程:1. (cx)=(cx)-1
              2. 如果(cx)不等于0,(IP)=(IP)+8位位移

 

ret 指令用栈中的数据修改IP的内容,实现近转移(-32768 ~ 32767),相当于 pop ip
retf 指令用栈中的数据修改CS和IP的内容,实现远转移(段间转移), 相当于 pop ip  pop cs
ret n 指令格式,相当于 pop I

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值