汇编语言小结

时间:2024.4.20

数据寻址方式:

1.立即数寻址方式 MOV AH,12H ;12H为字节立即数

MOV AX,1234H ;1234H为字立即数

2.寄存器寻址方式 MOV AX,BX

3.直接寻址方式(存储器直接寻址方式) MOV AX,[100H]

4.寄存器间接寻址 MOV AX,[SI]

5.寄存器相对寻址方式 MOV AX,100H[SI](也可表示为MOV AX,[SI+100])

6.基址变址寻址方式 MOV AX,[BX][DI]

7.相对基址变址寻址方式 MOV AX,MASK[BX][SI]

程序转移寻址方式

1.段内直接寻址

指令格式为:

JMP SHORT ADDR2 这种寻址方式适用于条件转移及无条件转移指令,但是当它用 JMP NEAR PTR ADDR1 于条件转移指令时,位移量只允许为8为位。

2.段内间接寻址

指令格式为:

JMP BX

JMP WORD PTR [BX+ADDR]

3.段间直接寻址

指令格式为:

JMP FAR PTR ADDR

4.段间间接寻址

指令格式为:

JMP DWORD PTR [ADDR+BX]

ADC 带进位加法; INC 加1; SBB 带借位减法; DEC 减1; NEG 求补; CMP 比较。 LEA 有效地址送寄存器; LDS 取地址指针到DS; LES 取地址指针到ES。

LEA BX,TABLE和MOV BX,OFFSET TABLE在功能上是相同的,BX寄存器中都可以得到符号地址TABLE的有效地址值。MOV指令的执行速度比LEA指令更快,但是,OFFSET只能与简单的符号地址相连,而不能和诸如TABLE[SI]或[BX+SI]等复杂操作数相连。因此,LEA指令在取得访问符号地址方面是很有用的。

【例3,25】执行指令LEA BX,[SI+0F62H]

执行指令前,若(SI)=003CH,则指令执行后,(BX)=003CH+0F62H=0F9EH。

PF:奇偶标志,记录运算结果中含1的个数。若个数为偶数则置PF=1,否则清零。可用于检测数据传送过程中是否发生错误。

SF:符号标志,记录运算结果的符号,若结果为负则置1,否则清零。

无符号数条件转移

JA/JNBE 地址标号 高于/不低于等于时转移

JAE/JNB 地址标号 高于等于/不低于时转移

JB/JNAE 地址标号 低于/不高于等于时转移

JBE/JNA 地址标号 低于等于/不高于时转移

带符号数条件转移

JG/JNLE OPR 大于/不小于等于时转移

JGE/JNL OPR 大于等于/不小于时转移

JL/JNGE OPR 小于/不大于等于时转移

JLE/JNG OPR 小于等于/不大于时转移

常用的DOS系统功能调用

1、键盘输入

01号调用——从键盘输入单个字符

调用格式:

MOV AH,01

INT 21H

功能:等待从键盘输入一个字符并送入AL

0A号调用——从键盘输入字符串

功能:从键盘接受字符串送入内存的输入缓冲区,同时送显示器显示。

调用前要求:先定义一个输入缓冲区

MAXLEN DB 100 ;第1个字节指出缓冲区能容纳的字符个数即缓冲区长度,不能为0 ACLEN DB ? ;第2个字节保留,以存放实际输入的字符个数

STRING DB 100 DUP (?) ;第3个字节开始存放从键盘输入的字符串

调用格式:

LEA DX,MAXLEN(缓冲区首偏移地址)

MOV AH,0AH

INT 21H

2、显示输出

02号调用——在显示器上显示输出单个字符

调用格式:

MOV DL,待显示字符的ASCII码

MOV AH,2

INT 21H

09号调用——在显示器上显示输出字符串

调用格式:

LEA DX,字符串首偏移地址

MOV AH,9

INT 21H

子程序定义是由一对过程定义伪指令PROC和ENDP来完成的,格式如下:

子程序名 PROC[NEAR|FAR]

[保护现场]

子程序体

[恢复现场]

RET

子程序名 ENDP

0为正1为负反码符号位不变各位取反补码再加1

【例4.11】在以BUF为首址的字存储区中存放有N个有符号数,要求采用“冒泡法”将它们按从大到小的顺序排列在BUF存储区中,是编写其程序。

.MODEL SMALL

.STACK

.DATA

BUF DW 13,-4,6,9,8,2,11,-8,-6,-20,30

N=($-BUF)/2

.CODE

START: MOV AX,@DATA

MOV DS,AX

MOV CX,N

DEC CX

LOOP1: MOV DX,CX

MOV BX,0

LOOP2: MOV AX,BUF[BX]

CMP AX,BUF[BX+2]

JGE NEXT

XCHG AX,BUF[BX+2]

MOV BUF[BX],AX

NEXT: ADD BX,2

LOOP LOOP2

MOV CX,DX

LOOP LOOP1

MOV AX,4C00H

INT 21H

END START ;内外重循环控制次数;保存外重循环控制次数


第二篇:汇编语言实验心得


一.实验内容

1.DEBUG的启动及其基本命令的使用

2.内存操作数与寻址方式

1)利用DEBUG程序中的“E”命令,将两个多字节数“12345678H”和“FEDCBA98H”分别送入起始地址为DS:0200H和DS:0204H两个单元中。

2)分别用直接寻址方式和寄存器间接寻址方式编写程序段,实现将DS:0200H单元和DS:0204H单元中的数据相加,并将运算结果存放在DS:0208H单元中。

3.顺序程序设计

X、Y、Z、V均为字变量,在X、Y、Z、V字单元中存放是16位带符号数。试编写汇编语言程序完成以下功能:

①计算表达式值(V–(X*Y+Z-720))/X;

②将上述表达式运算结果整数放在SUM1单元,余数放在SUM2单元。

4.分支程序设计

1)设X,Y为字变量,假定不溢出,计算X=|X-Y|。

2)将NUM单元中的一位十六进制数(0~9,A~F),转换为对应的ASCII码值存入ASC单元。

3)已知字节变量X,编程求下列表达式

即:当x>0

当x=0

当x<0

5.循环程序设计

1)定义10个字节型带符号数,求其和。

2)在内存单元DATA中定义一个16位数,统计其16位中1的个数,存入内

存的字单元COUNT。

3)定义10个字型无符号数,编写程序求其最小值。

6.子程序设计

1)设计一个子程序,计算1+2+?+N,其中N为给定的正整数,且N小于100。

2)定义10个字型带符号数,编写子程序求其最大值和统计正数的个数。

3)从键盘接收4位十进制数,将其转换为十六进制数并显示。

二.实验心得

上学期学习计算机组成原理的时候就对汇编有所了解,但通过这学期的学习,使我更加深入了解了其知识体系和计算机组成及内部程序执行的原理。对于各命令的熟练掌握后,自己亲自动手实验更是体会到了各命令的用途及执行的方法。通过各个基本命令可以轻松更改计算机内部寄存器的值和读写内存,磁盘,I/O端口的值,通过更改观察其对计算机的影响变化。

对于汇编语言的寻址方式,更是多种多样,通过对各寻址方式的比较,可以感受到各寻址方式的不足与好处,还有是对各寻址方式的注意事项,有的寻址方式需专用的寄存器,有的寄存器是禁止使用的,然而有的就开放的多,对寄存器没有特殊要求,然而在编程过程中使用较为合适的寻址方式是提高程序运行效率的保障,在对寄存器中的值做运算时要正确书写各值,在X86中只支持十六进制数,在运算结束后值得保存也是很重要的,不能随意保存。写数据传送指令时,目的操作数和源操作数的类型一定要匹配,CS不能作为目的操作数。

在学习完汇编语言程序格式和结构后就可以完整的编写汇编语言程序了,在编程中各种结构的选择是对程序效率的保障,在顺序结构中就不需要各种选择分支结构,顺序结构适合一些较简单按顺序执行的程序,然而复杂程序的编写就需要用到选择结构和分支结构了。另外,我们还应该掌握DOS系统功能调用,宏汇编等知识。

现在课程已结束一段时间,虽然不是完全掌握,但是还是了解了一些基本操作,可以解决一些基本问题,想要学好汇编,还需花更多时间去学习。在今后的学习过程中尽可能完善自己。

更多相关推荐:
汇编语言总结

汇编语言学习体会大一大二期间学写了一些高级语言,如C语言和C++。在对一些实际问题的编程处理上使用这些高级语言显得很是方便。于是在刚接触这门课的时候就对其实用性产生了怀疑和一些的抵触情绪。再学习了一段时间后,虽…

汇编语言学习心得

汇编学习心得08网工一班李锐0804031002在大三接触汇编语言之前我们在计算机组成原理课程中就已经有所了解了但也只是略微明白一些如jmpmov这样的指令极度缺乏系统性的学习在接触这门课程后感到汇编语言并不是...

《汇编语言程序设计》学习总结与心得

其实说实话在学这门课之前自己对汇编语言一点都不了解,只知道它也是一种语言,而且是一门很少用的语言,可能很多人都是这么想的,或许在学这门课之前不少同学也有和我当初一样的思想,大概学学就好,反正以后很少能用到,毕竟…

汇编语言学习心得

汇编语言程序设计学习总结与心得班级09计本3班学号0姓名刘得分本学期学习了汇编语言汇编语言是面向机器的程序设计语言在汇编语言中用助记符代替操作码用地址符号或标号代替地址码这样用符号代替机器语言的二进制码就把机器...

汇编语言重点知识总结

汇编语言重点知识总结汇编速查手册汇编语言总结概要寄存器与存储器1寄存器功能寄存器的一般用途和专用用途CSIP控制程序执行流程SSSP提供堆栈栈顶单元地址DSBXSIDI提供数据段内单元地址SSBP提供堆栈内单元...

汇编语言概念总结

1指令对标志位的影响MOV指令不影响标志位PUSH和POP指令均不影响标志位输入输出指令INOUT换码指令XLAT不影响标志位LEA目的操作数使用寄存器不能使用段寄存器源操作数不能用立即数和寄存器不影响标志位C...

汇编语言个人学习总结

DOS的提示符下可如下键入Debug启动调试程序DEBUG路径文件名参数1参数2Debug后可以不带文件名仅运行Debug程序需要时再用N和L命令调入被调试程序命令中可以带有被调试程序的文件名则运行Debug的...

汇编语言期末总结(小抄必备)

执行部件EU主要由算术逻辑运算单元ALU标志寄存器FR通用寄存器组和EU控制器等4个部件组成其主要功能是执行指令总线接口部件BIU主要由地址加法器专用寄存器组指令队列和总线控制电路等4个部件组成其主要功能是形成...

汇编语言考点总结

第一章基础知识一机器语言即机器指令机器可以正确执行的命令的集合二汇编语言的产生汇编指令是机器指令便于记忆的书写格式即助记符编译三汇编语言的组成汇编指令机器码的助记符伪指令由编译器执行其他符号由编译器识别四存储器...

汇编语言与接口技术要点总结

第二章微型计算机结构18086的段式存储结构段地址偏移量地址存储单元的物理地址或者段寄存器的值16偏移地址存储单元的物理地址2段寄存器通用寄存器指针与变址寄存器标志寄存器3寻址方式1寻址方式的概念2寻址方式的分...

《汇编语言》自己总结,第10章

101ret和retfret指令用栈中的数据修改IP的内容从而实现近转移相当于进行popIPretf指令用栈中的数据修改CS和IP的内容从而实现远转移相当于进行了popIPpopCS102call指令CPU执行...

汇编程序指令总结

汇编指令总结一数据传送指令14条1通用传送指令5条a基本传送指令MOV指令格式MOVdestsrcdestltsrc注意事项1操作数类型必须匹配2存储单元之间不能用MOV直接传送3CS和IP不能作为目的操作数C...

汇编语言总结(41篇)