分享
 
 
 

学汇编的方法

王朝other·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

汇编工作室 学习园地 入门学习 第2节 学汇编的方法 基本指令

------------------------------------------------------------

1. 学汇编的方法

应该具备的条件:--微机(80X86型微机)

--MSDOS操作系统或Win95/98的 "MS-DOS方式"

-- 编程工具: 文本编辑器: 如 MS-DOS 的 EDIT

汇编器 : 如 MASM.EXE 5.0 版本

连接器 : 如 LINK.EXE

二进制转换: 如 EXE2BIN.EXE

学习汇编语言实践性很强。只有经过编写大量代码才能熟练掌握。此外阅读源程序也很有帮助。

由于汇编语言是与 CPU 芯片紧密相关的,所以必须针对某一机型,清楚地了解 CPU 芯片及其外围

设备的硬件资料。只有这样,编写代码才能得心应手。所以有两类资料需要你去积累:一类是硬件

方面的资料和系统软件方面的资料,另一类是算法方面的经验。其他比如汇编工具等则没有多少东

西需要深究。

第一类资料,比如 各种 BIOS 中断,MS-DOS 功能调用,Windows API 库,这些可以归为系统

软件方面;而 CPU 结构,端口定义,中断定义,总线方式等可归为硬件资料。

第二类资料,比如排序算法,字符串查找算法等。像搜索引擎所采用的算法,能在最短的时间

内,找出符合条件的信息,而且还带有智能性。这种查找方案包含了很科学的算法。它们都是抽象

的东西。

总之,学习汇编,你应该目的明确,而且目标机器明确,要解决的问题也明确。这样才能有

的放矢,最终有所收获。

2 汇编语言基础 基本指令

我们学习的对象机器是 PC 机,CPU 是 Intel80x86,所以先熟悉 CPU 的大致结构。

其实经常用到的是 CPU 的各个寄存器,其他比如引脚,内部结构等,开始时先不去管它。

由于Intel80x86 各版本 CPU 新的与旧的保持兼容,旧的 CPU 下设计的程序无需任何修改就能在

新的CPU 下运行。Intel 8086/8088 的 所有寄存器在后来的 新版本 CPU 中都保持。它们也是最

基本的 CPU 寄存器。 所以主要学习 Intel 8086 CPU 的寄存器:

加法器 AX (AH/AL) 乘法,除法,I/O, 快速的算术运算

基址寄存器BX (BH/BL) 基址指针 (数据段)

计数器CX (CH/CL) 循环,重复或位移的计数器

数据寄存器DX (DH/DL) 乘法,除法,I/O

源索引SI 源串和索引指针

目标索引DI 目标串和索引指针

基址指针BP 栈的基址指针

栈指针SP 栈的当前位置指针

标志 CPU 标志

指令指针IP 当前指令的内存位置

代码段CS 程序代码段值

数据段DS 程序数据段值

栈段SS 栈操作的段值

附加段ES 程序附加数据段的段值

其中 CPU 标志寄存器各位的含义如下:

FLAG: (相应的 BIT 为 1 时的含义)

CF 进位位 向目标操作数进位或借位

PF 奇偶校验位 低字节校验结果为偶校验

AF 辅助进位标志 低 4 bits 的进位或借位标志

ZF 零标志 结果为零

SF 负数标志 结果为负数

TF 单步标志 (CPU)转为单步状态

IF 中断标志 中断响应打开 (清除时关闭)

DF 方向 字串操作默认向下(down rather than up)

OF 溢出 结果过大或过小(for destination)

汇编语言指令主要就是对上述各个寄存器的操作。下面这段代码是一个完整的 COM 型可执行

程序文件的代码,经过编译,连接和转换后,能直接执行,结果是在彩色背景下显示一些字符。

编译后只有204 Bytes。

(你需要把这段代码完整地复制下来并另存为一个以 ASM为扩展名的文件,例如 mypro1.asm。

然后对它进行编译连结和转换,就生成一个名为 mypro1.COM 的可执行文件。你只要在 DOS 命令行

敲入 mypro1 加回车就能看到它的执行结果。关于如何编译连结等问题以后再说。你先可以在汇编

工作室主页上下载简装工具,使用其中的 TOCOM.BAT [filename] 批处理即可顺利生成COM文件。)

在这个例子中使用了几类指令:

mov 寄存器,立即数 ;数据传输类

mov 内存,寄存器 ;数据传输类

push 寄存器 ;堆栈操作: 入栈

pop 寄存器 ;堆栈操作: 出栈

int 10H ;10H 号 中断 (视频)

int 21H ;21H 号 中断 (功能调用)

除了这些指令外,还看到:

assume ;假定

offset ;求偏量

ORG ;地址定位

byte ptr ;字节属性

db ;定义字节,内存分配

在一个完整的汇编源程序中,一般包括上述两类内容,它们分别是指令和汇编伪操作,

它们是构成源程序必不可少的成分。这些指令和汇编伪操作在用法上有许多细节,需要通

过具体的程序举例来逐步掌握。

;运行环境: MS-DOS 或 Windows98 的 MS-DOS 方式

;硬件条件: 安装有 VGA 或更新的显示适配器

;这是命令文件 (COM) 格式的程序结构,

stackseg segment stack

stackseg ends

codeseg segment

assume ss:codeseg

assume cs:codeseg

ORG 100H

Entry: mov ah,0fH ;取当前显示模式

int 10H

mov byte ptr cs:vMode,al

mov byte ptr cs:vPage,bh

mov ah,00H

mov al,03H

int 10H ;设置显示模式: 3

mov ah,05

mov al,00

int 10H ;设置当前显示页: 0

mov ah,06H

mov ch,00

mov cl,00

mov dh,24

mov dl,79

mov bh,63

mov al,00

int 10H ;清屏操作(用以指定色彩)

mov ah,06H

mov ch,10

mov cl,20

mov dh,15

mov dl,50

mov bh,00

mov al,00

int 10H ;清除指定屏幕区域(用以指定色彩)

mov ah,06H

mov ch,09

mov cl,22

mov dh,14

mov dl,52

mov bh,79

mov al,00

int 10H ;清除指定屏幕区域(用以指定色彩)

mov ah,02

mov dh,11

mov dl,30

mov bh,00

int 10H ;定位光标: 11,30

mov ah,09H

mov dx,offset cs:string1

push cs

pop ds

int 21H ;显示一串字符

mov ah,02

mov dh,13

mov dl,30

mov bh,00

int 10H ;定位光标: 13,30

mov ah,09H

mov dx,offset cs:string2

int 21H ;显示一串字符

mov ah,02

mov dh,25

mov dl,00

mov bh,00

int 10H ;定位光标:25,00(即隐藏光标)

mov ah,00

int 16H ;等待键盘输入

mov ah,00H

mov al,byte ptr cs:vMode

int 10H ;恢复显示模式

mov ah,05

mov al,byte ptr cs:vPage

int 10H ;恢复当前显示页

mov ah,02

mov dh,24

mov dl,00

mov bh,00

int 10H ;恢复光标: 24,00

mov ah,06H

mov ch,00

mov cl,00

mov dh,24

mov dl,79

mov bh,07

mov al,00

int 10H ;清屏

mov ax,4c00H

int 21H ;结束程序,返回 MS-DOS 提示符

String1 db 'Can you see it?$'

String2 db 'Any key to exit$'

vMode db ?

vPage db ?

codeseg ends

end Entry

----------------------------------------------------------------------------------------

汇编工作室 学习园地 入门学习 第2节 学汇编的方法 基本指令

欢迎提问 有问必答

2000.09.26

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有