汇编语言程序设计——初学2

一、介绍:

上一篇介绍了编写代码的大致模板,下面将介绍如何来实现一些常见的指令。如有错误,敬请斧正,万分感谢!

二、关于寄存器:

指令与寄存器的使用是分不开的,一些指令对寄存器的使用没有要求。而有些指令只能使用固定的寄存器,所以我们先介绍寄存器再介绍指令。

1.数据寄存器

8086CPU中有4个16位通用寄存器,AX、BX、CX、DX,这四个寄存器都可以拆成高8位和低8位,2个寄存器使用(例如:AH和AL、BH和BL)。一般时候这些通用寄存器没有区别,可以随便用。但在一些特殊指令下(例如:循环乘除法),需要使用到特定的寄存器。

AX:Accumlator 累加器寄存器,特殊功能和MUL/DIV有关

BX:Base 基地址寄存器,一般是用来存偏移地址(8086汇编语言中的地址表示为:<段地址 :偏移地址>)。例如:DS:[BX]也可写成[BX],默认段地址为数据段,当然也可以指定为其他段。

CX:Count 循环计数器,和循环指令LOOP 有关

DX:Data 数据寄存器,特殊功能和MUL/DIV有关,也与输入输出有关

2.指针变址寄存器

SP、BP、SI、DI,这四个寄存器也是16位。与数据寄存器不同的是这四个寄存器不能拆成2个寄存器使用,它们一般用来存地址。

SP (Stack Pointer):堆栈指针寄存器;

BP (Base Pointer):基指针寄存器;

SI (Source Index):源变址寄存器;

DI (Destination Index):目的变址寄存器;

三、常见的指令

1.MOV

功能:移动数据

MOV指令应用例子:

DATA SEGMENT
        X DB 12H
        Y DW 1234H
        STRING DB 'HELLO,WORLD!'
DATA ENDS

STACK SEGMENT
STACK ENDS

CODE SEGMENT
        ASSUME DS:DATA,SS:STACK,CS:CODE
    MAIN:
        MOV AX,DATA
        MOV DS,AX
        
       ;MOV 寄存器,常量
        MOV AX, 10   ;AX=10
        MOV BL, 20   ;BL=20

       ;MOV 寄存器,寄存器
        MOV AL, BL   ;AL=20

       ;MOV 寄存器,内存
        MOV CL, X    ;CL=12H
        MOV DX, Y    ;DX=1234H

        MOV BX,OFFSET STRING ;BX=STRING的偏移地址
        MOV DL, [BX]         ;DL=H
        MOV DL, [BX+1]       ;DL=E 
        

MOV指令常见错误:

MOV AX,BL   ;MOV 16bit,8bit 不匹配
MOV CL,999  ;超过表示范围
MOV X1, X2  ;MOV的2个操作数不能都是内存

2.ADD

功能:实现加法

ADD AX,X  ;AX=AX+X

ADD其他使用要求与MOV相同

3.SUB

功能:实现减法

SUB AX,X  ;AX=AX-X

SUB其他使用要求与MOV相同

4.INC

功能:实现自增

INC AX ;AX++

5.DEC

功能:实现自减

DEC AX ;AX--

6.MUL

功能:实现乘法

MUL r8/m8   ;AX = AL * r8/m8
MUL r16/m16 ;DX.AX = AX * r16/m16 

为方便起见,r:寄存器,m内存。例如:r8表示8bit的寄存器,m8表示8bit内存操作数

7.DIV

功能:实现除法

DIV r8/m8   ; AX ÷ r8/m8,  AL=商,AH=余数
DIV r16/m16 ;DX.AX ÷ r16/m16, AX=商,DX=余数

可见进行乘除法时,应当先用MOV把被乘数 /被除数(即AL或AX)设好,再MUL /DIV。

python023基于Python旅游景点推荐系统带vue前后端分离毕业源码案例设计 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三MU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值