汇编语言(王爽) 第7章 寻址方法

这章讲一些寻址方法,对前面寻址方法的总结把

7.1 and or

2个指令 上栗子

mov al,00001111b

and al,11110000b

al=00000000b

mov al,00001111b

or al,11110000b

al=11111111b

7.2 ASCII码

之前就写过一篇ACSII码的,这里主要写下我们在键盘上按键再输出到屏幕的过程

我们在键盘上按下a键

这个信息被传到计算机,计算机用ASCII码对它编码,成为61h,

再扔到一个内存段中

文本编辑器把内存中的61h扔到显存中

显卡一看显存里面有东西进来了

显卡立刻就去读显存中的东西再扔到显示器上

下面讲了大小写转换的问题,主要是注意大小写的ASCII码差值,a的61h 01100001,A的41h 01000001

并且利用and or进行大小写转换

还介绍了几种表示内存单元的方法

[idata]

[bx]

[bx+idata]

[bx+si]

[bx+si+idata]

常量

变量

变量+常量

变量+变量

变量+变量+常量

7.7  si和di

介绍了2个寄存器,si和di。这2个不能分为8位寄存器

也基本是小练习~~~~~~~~~~~

EOF

时间: 2024-08-07 20:54:45

汇编语言(王爽) 第7章 寻址方法的相关文章

汇编语言(王爽) 第1章基础知识

1.1 机器语言 机器语言就是机器指令的集合.机器指令是啥呢?就是一列二进制的数据,计算机把它转成高低电平,使计算机的其他器件驱动并运算.(计算机如何使用2进制语言?) 早期程序都是用机器语言写的,但是有个问题就是太麻烦,数据信息太长,写错一个0或1就会来BUG了. 这种机器语言根本不是人写的,注定会被淘汰. 1.2 汇编语言 这个时候,汇编语言就挺身而出. 汇编语言就是机器语言的便于记忆的格式把 一个指令1000100010001000 表示把寄存器A1的内容弄到寄存器A2上.如下 操作介绍:

汇编语言(王爽) 第8章数据处理的2个基本问题

计算机进行数据处理的时候要知道2个基本问题 要处理的数据放在哪 要处理的数据多长 刚开始定义了2个描述性符号备用 reg和sreg reg 表示一个寄存器如 ax,bx,cx,dx,ah.......sp,bp,si,di sreg表示一个段寄存器 如 ds,ss,cs,es 8.1 bx,si,di,bp 只有这4个寄存器可以放在[]中间和段地址ds或ss搭配进行内存单元寻址 这4个可以单独使用,也搭配使用,但只有4种组合 [bp]的默认段地址是ss,其他3个是ds 8.2 数据放在什么地方

汇编语言(王爽) 第2章 寄存器

CPU由运算器,控制器,寄存器等器件组成 汇编指令可以操作寄存器中的数据.如mov AX,BX就是把寄存器BX中的值加上寄存器AX中的值,再把结果放在AX上 8086CPU的寄存器的有14个,这里就讲AX,BX,CX,DX,CS,IP这么几个先 2.1通用寄存器 就是指AX,BX,CX,DX 用来存放一般数据 如AX是16位,但是8086CPU之前的一代是8位的,所以AX分为AH,AL来兼容之前版本的数据 同理 BX,CX,DX.另外AH的H是high的意思,在左边高位,L是low的意思在右边是

汇编语言(王爽) 第5章[BX]和loop指令

mov ax,[0] 把一个内存单元给寄存器ax,内存单元长度2个字节,偏移地址0,段地址ds mov al,[0] 把一个内存单元给寄存器al,内存单元长度1个字节,偏移地址0,段地址ds so:要描述一个内存单元,需要1.ds和偏移地址2.内存单元长度 [bx]也表示一个内存单元,偏移地址在寄存器bx中罢了 我们用()表示一个寄存器或一个内存单元中的内容 ()中可以是寄存器,段寄存器,内存单元的物理地址 5.1 [bx] mov ax,[bx] 把段寄存器ds和偏移地址在bx中的内存单元的内

汇编语言(王爽) 第4章 第一个程序

这章算是一个实践部分把,写 了一个汇编程序,并用debug去跟踪每条指令的进程,看寄存器和内存的变化,算是对之前的一个小总结把 4.1 源程序到执行的过程 一个汇编程序写好,要编译成目标文件,文件后缀是obj的,再链接形成exe后缀的,再接着去执行 4.2 源程序 直接上图把 伪指令由编译器执行,汇编指令由CPU执行 assume是伪指令,关联段寄存器和程序中用segment and end代表的段关联 segment 和ends表示段的开始和结束 end表示整个程序结束 另外程序会有个叫程序返

汇编语言(王爽) 第6章包含多个段的程序

程序到了内存中我们分为code(代码)段,也就是大部分指令段,数据段,栈 6.1 在代码段中使用数据 上图 dw表示define word定义一个字,16位 会出现cs执行的前16位是数据段,后面才是指令,所以要把IP设成10h 或者直接在第一条指令前面在start,再在最后面的end start 程序运行的第一条不是汇编指令可能会报错把 6.2 在代码段中使用栈 这的题目都是从内存单元的数据换到另一个内存单元 开始奇怪,为啥不直接换,还要专门定义一个栈空间出来做个中间体 查了资料才知道,内存单

汇编语言(王爽) 第11章 标志寄存器

这里讲一个特殊的寄存器,flag 先看flag的16位显示 11.1 zf 指令执行后,结果0,ZF=1 指令执行后,结果不为0,ZF=0 11.2 pf 指令执行后,所有bit位中1的个数是否位偶数,若为偶数,那么pf=1 若为奇数,pf=0 11.3 sf 指令执行后,结果负,SF=1 指令执行后,结果不为负,SF=0 11.4 cf 进位 若出现进位,那么CF=1 没有的话CF=0 11.5 of 溢出, 数字的溢出. 8位范围是-128-127 若130就是溢出了 11.6 abc指令

汇编语言(王爽) 第3章寄存器(内存访问)

3.1 内存中的字 内存中的字是16位的,以2个内存单元存储 地址大的存高位(字的左边8位),地址小的存低位(字的右边8位) 字单元:存放1个字形数据的内存单元,由2个内存单元组成,共16位 3.2 DS 一个寄存器的名字,用来放数据段的段地址 mov 指令可以把数据转到寄存器,一个寄存器的内容转到另一个寄存器,内存单元(字单元)转到寄存器 但是一般会mov ax,1000h;mov ds,ax而不是直接mov ds,1000h 因为8086CPU不支持直接把内存单元的东西转到段寄存器上面 3.

汇编语言(王爽) 第10章 call和ret

这2个指令也是转移指令,一起用的时候有特效~~~~ 10.1 ret and retf ret 相当于pop ip 把栈顶的字弹出到ip retf相当于先执行pop ip and pop cs 10.2 call 执行2步 1 先把IP或cs和ip推入栈中 2 转移到 标号或内存处 10.3 call 标号 call 标号 转移范围为-32768-32767 16位转移 相当于执行 push ip jmp near ptr 标号 10.4 call far ptr 标号 相当于 push cs