首页 > 编程语言 >汇编语言

汇编语言

时间:2023-05-04 17:03:24浏览次数:37  
标签:16 汇编语言 al mov 指令 寄存器 ax

汇编语言

debug 是 DOS、Windows 都提供的实模式(8086 方式)程序的调试工具。

  • R 命令查看、改变 CPU 寄存器的内容
  • D 命令查看内存中的内容
  • E 命令改写内存中的内容
  • U 命令将内存中的机器指令翻译成汇编指令
  • T 命令执行一条机器指令
  • A 命令以汇编指令的格式在内存中写入一条机器指令

寄存器

AH&AL = AX (accumulator):累加寄存器
BH&BL = BX (base):基址寄存器
CH&CL = CX (count):计数寄存器
DH&DL = DX (data):数据寄存器
SP (Stack Pointer):堆栈指针寄存器
BP (Base Pointer):基址指针寄存器
SI (Source Index):源变址寄存器
DI (Destination Index):目的变址寄存器
IP (Instruction Pointer):指令指针寄存器
CS (Code Segment):代码段寄存器
DS (Data Segment):数据段寄存器
SS (Stack Segment):堆栈段寄存器
ES (Extra Segment):附加段寄存器
OF overflow flag 溢出标志 操作数超出机器能表示的范围表示溢出,溢出时为 1
SF sign Flag 符号表示 记录运算结果的符号,结果负时为 1
ZF zero flag 零标志 运算结果等于 0 时为 1,否则为 0
CF carry flag 进位标志 最高有效位产生进位时为 1,否则为 0
AF auxiliary carry flag 辅助进位标志,运算时,第 3 位向第 4 位产生进位时为 1,否则为 0
PF parity flag 奇偶标志 运算结果操作数位为 1 的个数为偶数个数时为 1,否则为 0
DF direcion flag 方向标志 用于串处理 DF = 1 时,每次操作后使 SI 和 DI 减小,DF = 0 时则增大
IF interrupt flag 中断标志 IF = 1 时,允许 CPU 响应可屏蔽中断,否则关闭中断
TF trap flag 陷阱标志 用于调试单步操作

mov 指令

ah 高八位
al 低八位
mov 寄存器、数据          比如:mov ax,8
mov 寄存器、寄存器        比如:mov ax,bx
mov 寄存器、内存单元      比如:mov ax,[0]
mov 内存单元、寄存器      比如:mov [0],ax
mov 段寄存器、寄存器      比如:mov ds ax

add 指令

add ax,bx

sub 指令

sub ax,bx

mul 指令

  • 两个相乘的数:两个相乘的数,要么都是 8 位,要么都是 16 位。如果是 8 位,一个默认放在 AL 中,另一个放在 8 位 reg 或内存字节单元中:如果是 16 位,一个默认放在 AX 中,另一个放在 16 位 reg 或内存字单元中。
  • 结果:如果是 8 位乘法,结果默认放在 AX 中:如果是 16 位乘法,结果高位默认放在 DX 中存放,低位在 AX 中存放
计算 100 * 10
mov al,64
mov bl,A
mul bl

计算 100 * 10000
mov ax,64
mov bx,2710
mul bx

div 指令

  • 除数:有 8 位和 16 位两种,在一个 reg 或内存单元中
  • 被除数:默认放在 AX 或 DX 和 AX 中,如果除数为 8 位,被除数则为 16 位,默认在 AX 中存放:如果除数位16位,被除数则为 32 位,在 DX 和 AX 中存放,DX 存放高 16 位,AX 存放低 16 位
  • 结果:如果除数为 8 位,则 AL 存储则 AL 存储除法操作的商,AH 存储除法操作的余数:如果除数为 16 位,则 AX 存储除法操作的商,DX 存储除法操作的余数
div reg
div 内存单元

and 指令

mov al,63 (01100011B)
and al,3B (00111011B)
执行后 al = 23 (00100011B)

or 指令

mov al,63 (01100011B)
or al,3B (00111011B)
执行后 al = 7B (01111011B)

shl 和 shr 指令 (左移、右移)

mov al,48 (01001000B)
shl al,1
执行后 al = 90 (10010000B)

mov ax,F
shr ax,1
执行后 ax = 0007

rol、ror 循环左移、右移
rcl、rcr 带进位的循环左移、右移

inc 和 dec 指令(自增、自减)

inc ax
dec ax

nop(空指令)

nop

xchg 指令(交换)

xchg ax,bx

neg 指令(取补)

neg ax

int 中断

标签:16,汇编语言,al,mov,指令,寄存器,ax
From: https://www.cnblogs.com/HuiPuKui/p/17371049.html

相关文章

  • 使用汇编语言 实现hello world功能
    使用汇编语言实现helloworld功能汇编环境设置安装DOSBox0和正常的软件安装没有区别在根目录文件DOSBox0.74-win32-installer.exe双击然后直接下一步next就行了masm5编译环境然后将根目录文件debug.exe文件拖放到masm5文件夹然后再将此文件夹拖放到D:的根目录此目......
  • 光速了解汇编语言
    目录光速了解汇编语言什么是机器语言?汇编语言计算机的硬件动手编写第一个汇编程序继续学习汇编光速了解汇编语言什么是机器语言?要想了解什么是汇编语言,首先你得知道什么是机器语言!计算机能够直接识别的是由二进制数0和1组成的代码,它是不需要翻译直接就能识别(直接执行......
  • Linux操作系统汇编语言基础知识(图文代码)
    1、什么是汇编语言,它在计算机语言中的地位?汇编语言是程序设计语言的基础语言,是唯一可以直接与计算机硬件打交道的语言2、汇编语言与源程序、汇编程序、汇编的关系?3、汇编语言的特点\1)汇编语言与机器指令一一对应,可充分理解计算机的操作过程汇编语言指令是机器指令的符号表......
  • Linux操作系统ARM指令集与汇编语言程序设计
    一、实验目的1.了解并掌握ARM汇编指令集2.应用ARM指令集编写一个程序操控开发板上的LED灯二、实验要求应用ARM汇编指令集编写程序,实现正常状态下开发板上的LED灯不亮,按下一个按键之后开发板上的LED灯进入流水灯模式。三、实验原理四个LED灯的电路如下图所示:四个按键电路图......
  • 0-C语言与汇编语言的转换
    汇编语言入门四:打通C和汇编语言-知乎Win10下C语言转8086汇编-博客园:https://www.cnblogs.com/VxerLee/p/15264290.htmlLinux执行汇编程序在Linux下运行你的第一个汇编程序_linux怎么执行汇编代码_冷色调的夏天的博客-CSDN博客在线网站:CompilerExplorer强烈推荐一个在线网......
  • win32汇编语言学习之二
        对于汇编语言来说win32环境中只有一种类型,那就是32位整数,例如MessageBoxA的四个参数HWND,LPCTSTR,LPCTSTR,UINT之所以定义成不同的摸样主要是为了说明其用途,我们在汇编环境下调用MessageBoxA时,DOS状态下会是这样的:  pushuType  pushlpCaption  pushlpText ......
  • 8086汇编语言学习1-loop循环实现冒泡排序
    关键点:  1.loop指令的原理、断点位置  2.条件转移指令JNLE(小于或等于)和JG(大于)、与CMP(比较)一起使用DATASEGMENTAdw1,3,4,2,5DATAENDSCODESEGMENT......
  • 8086汇编语言学习1-loop循环实现冒泡排序
    关键点:  1.loop指令的原理、断点位置  2.条件转移指令JNLE(小于或等于)和JG(大于)、与CMP(比较)一起使用DATASEGMENTAdw1,3,4,2,5DATAENDSCODESEGMENT AS......
  • 自己动手从零写桌面操作系统GrapeOS系列教程——21.汇编语言写硬盘实战
    学习操作系统原理最好的方法是自己写一个简单的操作系统。在上一讲中我们学习了用汇编语言读硬盘,本讲我们来学习用汇编语言写硬盘。同样也是设计一个简单的实验,实验内......
  • 自己动手从零写桌面操作系统GrapeOS系列教程——20.汇编语言读硬盘实战
    学习操作系统原理最好的方法是自己写一个简单的操作系统。本讲我们设计一个简单的读硬盘实验。通过一定的方法使硬盘第二个扇区的前3个字节依次为1、2、3,最后3个字节依......