汇编语言学习笔记

第六章 包含多个段的程序

在代码段中使用数据

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

start: 程序的第一条指令 … end start

在代码段中使用栈

在描述dw的作用时,可以说用它定义数据,也可以说用它开辟内存空间

dw:define word

格式:[变量名] dw 数据1,数据2,… 功能:定义的是字型数据

说明:变量名可有可无,表明所定义的第一个字节的偏移地址 举例:data_word dw 100,100h

db:define byte

格式:[变量名] db 数据1,数据2,… 功能:定义的是字节型数据 举例:data_byte db 10,10h

将数据、代码、栈放入不同的段中

在代码段中使用数据和栈,存在的问题: 程序显得混乱

如果数据、栈和代码需要的空间超过64KB,就不能放在一个段中。 解决:定义多个段,将数据、栈和代码放到不同的段中。

定义多个段的方法:和定义代码段的方法一样 对段内数据的引用

段名相当于一个标号,代表了段地址。 偏移地址看数据在段中的具体位置 代码段、数据段、栈段是人为的安排。

第七章 更灵活的定位内存地址的方法

AND :逻辑与指令

格式:AND 目的操作数,源操作数

功能:按位进行与运算,结果放到目的操作数 例如:mov al,01100011b and al, 00111011b 执行后 al=00100011b

OR :逻辑或运算

格式:OR 目的操作数,源操作数

功能:按位进行或运算,结果放到目的操作数 例如:mov al,01100011b or al,00111011b 执行后 al=01111011b

NOT:逻辑非 格式:not 操作数 功能:按位进行非运算 例如:mov al,01100011b not al

执行后, al=10011100b

XOR:逻辑异或(相同为0,不同为1) 格式:xor 目的操作数,源操作数 功能:按位进行异或运算 例如:mov al,01100011b xor al,00111011b 执行后, al=01011000b

大小写转换问题

一个字母不管它原来是大写字母还是小写字母,将它二进制形式(ASCII码)的第五位置为0,它就必将变为大写字母;将它的第五位置为1,它就必将变为小写字母.

联系客服:779662525#qq.com(#替换为@)