汇编语言之第五章至第八章知识汇总 汇编语言之第五章【BX】和loop指令 汇编语言之第六章包含多个段的程序 汇编语言之第七章更灵活的定位内存地址的方法 汇编实验之第八章数据处理的两个基本问题

 

 

 

汇编语言之第五章【BX】和loop指令

 

一:【bx】

  【bx】和之前用过的【0】有些类似,都是表示内存单元,而它的偏移地址在bx中。段地址默认在ds中

  描述一个内存单元 需要知道,1内存单元的地址,2内存单元的长度(类型)。

二:loop

  inc bx的含义是bx中的内容加1

  loop指令的格式是:   loop   标号

  cx是用来控制循环执行次数的

  CPU执行loop指令时,要操作1 (cx)=(cx)-1     2   判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行

三:我们使用一个描述性的符号“()”来表示一个寄存器或一个内存单元中的内容。

  “( )”中的元素可以有3种类型:1寄存器名 2段寄存器名  3内存单元的物理地址(一个20位数据)

  “(X)”所表示的数据有两种类型:  1字节  2字。   是哪种类型由寄存器名或具体的运算决定

四:约定idata表示常量

五:在汇编源程序中,数据不能以字母开头。在执行命令时,如果想一次将循环执行完,可以使用p命令

六:段前缀用于显式地指明内存单元的段地址,如“ds:”,"cs:"

汇编语言之第六章包含多个段的程序

 

一:dw=define word 即使用dw定义字型数据(数据之间以逗号分隔)dw 既可定义数据,也可以说用它开辟内存空间

db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1

dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2
dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4

二:程序取得所需空间的方法有两种,1是在加载程序的时候为程序分配,2是程序在执行的过程中向系统申请。

三:数据和指令在本质上无区别,为了让程序的入口处是我们所希望执行的指令。我们可以加标号。在程序入口前加标号,在程序结束后加上相同的标号。

  标号 start 与 end start——end 除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方,

  此处用 end 指令表明了程序的入口在标号 start 处,被转化为一个入口地址

四:将数据、代码、栈放在不同的段中,可以使程序结构清晰易懂,对于8086而言,可以使用多个栈,解决长度超64kb的限制问题

  访问段中的数据,通过地址(段地址和偏移地址),段名即代表一个标号,代表段地址。

  用伪指令 assume 将 cs、ds、ss 分别和 code、data、stack 段相连之后,CPU 也没并没有将对应的段和段寄存器相连接,因为 assume 只是伪指令

汇编语言之第七章更灵活的定位内存地址的方法

 

一:and和or指令。

  and指令:逻辑与指令,按位进行与运算。通过该指令可将操作对象的相应位设为0,其他位不变。

  or指令:逻辑或指令,按位进行或运算。通过该指令可将操作系统的相应位设为1.

二:ASCII码。一种编码方案,是在计算机系统中通常被采用的的,所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。

  一个文本编辑过程中,就包含着按照ASCII编码规则进行的编码和解码。

三:以字符形式给出的数据,用‘......’的方式知名数据是以字符的形式给出的。编译器将它们转化为相应的ASCII码。

四:大小写转换。小写字母的ASCII码值比大写字母的ASCII码值大20H。

五:【bx+idata】表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)

六:si和di是8086CPU中和bx功能相近的寄存器,si和di不能分成两个8位寄存器来使用。

  【bx+si】和【bx+di】的含义相似,表示一个内存单元,它的编译地址为(bx)+(si)即bx中的数值加上si中的数值。

汇编实验之第八章数据处理的两个基本问题

 

一:reg来表示一个寄存器,用sreg来表示一个段寄存器。

  reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di

  serg集合包括:ds,ss,cs,es

二:(1)在8086CPU中,只有bx,si,di,bp这四个寄存器可以用在“【....】”来进行内存单元的寻址。

  (2)在【....】中,这四个寄存器可以单个出现,或只能以四种组合出现:bx和si,bx和di,bp和si,bp和di.

    (3只要在【....】中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。

三:

四:寻址方式。

五。指令要处理的数据有多长?汇编语言中用以下方法处理。

(1)通过寄存器名指明要处理的数据的尺寸。

(2)在没有寄存器名存在的情况下,
        用操作符X ptr指明内存单元的长度,
        X在汇编指令中可以为word或byte。
(3)其他方法。

在没有寄存器参与的内存单元访问指令中,
用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的。
否则,CPU无法得知所要访问的单元是字单元,还是字节单元

六:div指令

div是除法指令,使用div作除法的时候:
除数:8位或16位,在寄存器或内存单元中
被除数:(默认)放在AX 或 DX和AX中
结果:运算        8位           16位
            商          AL              AX
           余数        AH               DX

div指令格式:
div reg
div 内存单元

七:

用db和dw定义字节型数据和字型数据。
dd是用来定义dword (double word双字)型数据的。

八:

dup是一个操作符,在汇编语言中同db、dw、dd 等一样,
也是由编译器识别处理的符号。
它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复

一:【bx】

  【bx】和之前用过的【0】有些类似,都是表示内存单元,而它的偏移地址在bx中。段地址默认在ds中

  描述一个内存单元 需要知道,1内存单元的地址,2内存单元的长度(类型)。

二:loop

  inc bx的含义是bx中的内容加1

  loop指令的格式是:   loop   标号

  cx是用来控制循环执行次数的

  CPU执行loop指令时,要操作1 (cx)=(cx)-1     2   判断cx中的值,不为零则转至标号处执行程序,如果为零则向下执行

三:我们使用一个描述性的符号“()”来表示一个寄存器或一个内存单元中的内容。

  “( )”中的元素可以有3种类型:1寄存器名 2段寄存器名  3内存单元的物理地址(一个20位数据)

  “(X)”所表示的数据有两种类型:  1字节  2字。   是哪种类型由寄存器名或具体的运算决定

四:约定idata表示常量

五:在汇编源程序中,数据不能以字母开头。在执行命令时,如果想一次将循环执行完,可以使用p命令

六:段前缀用于显式地指明内存单元的段地址,如“ds:”,"cs:"

一:dw=define word 即使用dw定义字型数据(数据之间以逗号分隔)dw 既可定义数据,也可以说用它开辟内存空间

db定义字节类型变量,一个字节数据占1个字节单元,读完一个,偏移量加1

dw定义字类型变量,一个字数据占2个字节单元,读完一个,偏移量加2
dd定义双字类型变量,一个双字数据占4个字节单元,读完一个,偏移量加4

二:程序取得所需空间的方法有两种,1是在加载程序的时候为程序分配,2是程序在执行的过程中向系统申请。

三:数据和指令在本质上无区别,为了让程序的入口处是我们所希望执行的指令。我们可以加标号。在程序入口前加标号,在程序结束后加上相同的标号。

  标号 start 与 end start——end 除了通知编译器程序结束外,还可以通知编译器程序的入口在什么地方,

  此处用 end 指令表明了程序的入口在标号 start 处,被转化为一个入口地址

四:将数据、代码、栈放在不同的段中,可以使程序结构清晰易懂,对于8086而言,可以使用多个栈,解决长度超64kb的限制问题

  访问段中的数据,通过地址(段地址和偏移地址),段名即代表一个标号,代表段地址。

  用伪指令 assume 将 cs、ds、ss 分别和 code、data、stack 段相连之后,CPU 也没并没有将对应的段和段寄存器相连接,因为 assume 只是伪指令

汇编语言之第七章更灵活的定位内存地址的方法

 

一:and和or指令。

  and指令:逻辑与指令,按位进行与运算。通过该指令可将操作对象的相应位设为0,其他位不变。

  or指令:逻辑或指令,按位进行或运算。通过该指令可将操作系统的相应位设为1.

二:ASCII码。一种编码方案,是在计算机系统中通常被采用的的,所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。

  一个文本编辑过程中,就包含着按照ASCII编码规则进行的编码和解码。

三:以字符形式给出的数据,用‘......’的方式知名数据是以字符的形式给出的。编译器将它们转化为相应的ASCII码。

四:大小写转换。小写字母的ASCII码值比大写字母的ASCII码值大20H。

五:【bx+idata】表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)

六:si和di是8086CPU中和bx功能相近的寄存器,si和di不能分成两个8位寄存器来使用。

  【bx+si】和【bx+di】的含义相似,表示一个内存单元,它的编译地址为(bx)+(si)即bx中的数值加上si中的数值。

汇编实验之第八章数据处理的两个基本问题

 

一:reg来表示一个寄存器,用sreg来表示一个段寄存器。

  reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di

  serg集合包括:ds,ss,cs,es

二:(1)在8086CPU中,只有bx,si,di,bp这四个寄存器可以用在“【....】”来进行内存单元的寻址。

  (2)在【....】中,这四个寄存器可以单个出现,或只能以四种组合出现:bx和si,bx和di,bp和si,bp和di.

    (3只要在【....】中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。

三:

四:寻址方式。

五。指令要处理的数据有多长?汇编语言中用以下方法处理。

(1)通过寄存器名指明要处理的数据的尺寸。

(2)在没有寄存器名存在的情况下,
        用操作符X ptr指明内存单元的长度,
        X在汇编指令中可以为word或byte。
(3)其他方法。

在没有寄存器参与的内存单元访问指令中,
用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的。
否则,CPU无法得知所要访问的单元是字单元,还是字节单元

六:div指令

div是除法指令,使用div作除法的时候:
除数:8位或16位,在寄存器或内存单元中
被除数:(默认)放在AX 或 DX和AX中
结果:运算        8位           16位
            商          AL              AX
           余数        AH               DX

div指令格式:
div reg
div 内存单元

七:

用db和dw定义字节型数据和字型数据。
dd是用来定义dword (double word双字)型数据的。

八:

dup是一个操作符,在汇编语言中同db、dw、dd 等一样,
也是由编译器识别处理的符号。
它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复

一:and和or指令。

  and指令:逻辑与指令,按位进行与运算。通过该指令可将操作对象的相应位设为0,其他位不变。

  or指令:逻辑或指令,按位进行或运算。通过该指令可将操作系统的相应位设为1.

二:ASCII码。一种编码方案,是在计算机系统中通常被采用的的,所谓编码方案,就是一套规则,它约定了用什么样的信息来表示现实对象。

  一个文本编辑过程中,就包含着按照ASCII编码规则进行的编码和解码。

三:以字符形式给出的数据,用‘......’的方式知名数据是以字符的形式给出的。编译器将它们转化为相应的ASCII码。

四:大小写转换。小写字母的ASCII码值比大写字母的ASCII码值大20H。

五:【bx+idata】表示一个内存单元,它的偏移地址为(bx)+idata(bx中的数值加上idata)

六:si和di是8086CPU中和bx功能相近的寄存器,si和di不能分成两个8位寄存器来使用。

  【bx+si】和【bx+di】的含义相似,表示一个内存单元,它的编译地址为(bx)+(si)即bx中的数值加上si中的数值。

一:reg来表示一个寄存器,用sreg来表示一个段寄存器。

  reg的集合包括:ax,bx,cx,dx,ah,al,bh,bl,ch,cl,dh,dl,sp,bp,si,di

  serg集合包括:ds,ss,cs,es

二:(1)在8086CPU中,只有bx,si,di,bp这四个寄存器可以用在“【....】”来进行内存单元的寻址。

  (2)在【....】中,这四个寄存器可以单个出现,或只能以四种组合出现:bx和si,bx和di,bp和si,bp和di.

    (3只要在【....】中使用寄存器bp,而指令中没有显性地给出段地址,段地址就默认在ss中。

三:

四:寻址方式。

五。指令要处理的数据有多长?汇编语言中用以下方法处理。

(1)通过寄存器名指明要处理的数据的尺寸。

(2)在没有寄存器名存在的情况下,
        用操作符X ptr指明内存单元的长度,
        X在汇编指令中可以为word或byte。
(3)其他方法。

在没有寄存器参与的内存单元访问指令中,
用word ptr或byte ptr显性地指明所要访问的内存单元的长度是很必要的。
否则,CPU无法得知所要访问的单元是字单元,还是字节单元

六:div指令

div是除法指令,使用div作除法的时候:
除数:8位或16位,在寄存器或内存单元中
被除数:(默认)放在AX 或 DX和AX中
结果:运算        8位           16位
            商          AL              AX
           余数        AH               DX

div指令格式:
div reg
div 内存单元

七:

用db和dw定义字节型数据和字型数据。
dd是用来定义dword (double word双字)型数据的。

八:

dup是一个操作符,在汇编语言中同db、dw、dd 等一样,
也是由编译器识别处理的符号。
它是和db、dw、dd 等数据定义伪指令配合使用的,用来进行数据的重复

猜你喜欢

转载自www.cnblogs.com/bowentianxia/p/10155025.html