汇编初学习1

debug命令是DOS下的一个调试工具,用于查看和修改内存内容。在使用时,需先执行dir命令进入debug界面。文章详细介绍了debug的常用指令,如t、r、u、e、a、d等,以及汇编指令如add、sub、mul、div、移位操作和跳转指令。此外,还讨论了不同类型的寻址方式和标志位状态,如零标志位、奇偶标志位、符号标志位、进位标志位和溢出标志位,这些都是理解汇编程序执行的关键概念。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

debug命令(truead)

使用debug命令时需要先输入dir命令

(mount c d:/masm611->c:->dir->debug)(进入debug界面

)

t是指使汇编语句执行一句

r是指显示当前内存中AX,BX,……等内容

u是指以汇编形式显示内容

e是指修改内存中的内容,在某一物理地址上写入内容

a是指修改以汇编代码写入汇编代码

d是指显示内存中的数据

具体指令

add 寄存器1 寄存器2 相加指令(将数据加到第一个寄存器上)

sub 寄存器1 寄存器2 相减指令 (将寄存器1的数组减去寄存器2中的数据,并将结果存在寄存器1上)

mul 寄存器 B              相乘指令(数据默认是其中一个乘数存储在寄存器AX里面,将此时的寄存器以寄存器B相乘,然后将结果存储在寄存器AX中,如果结果超过16位就将数据AX(低十六位),DX(高十六位)中)

div 寄存器B               相除指令(被除数如果超过16位就存储在AX(低十六位),DX(高十六位)中,如果被除数不超过16位就存储在AX中)(结果:将算出的结果的商存储在AX,余数存储在DX,)

and与or操作,可以将寄存器里面的数和一个数进行and,or操作

左移:shl(普通左移)与rol(循环左移)

右移shr(普通右移动)与ror(循环右移)

在左移和右移动过程中,如果移动位数大于1需要将移动的位数存放在cl中

inc(increase)自增相当于C语言里面的++

dec(decrease)自减相当于C语言里面的--

nop(并没有什么实际意义,指令占据一个字节)

xchg(exchage)交换指令

word prt强制类型转换为一个字(两个字节,16位)

jmp 段地址:偏移地址指定跳转地址

jmp 寄存器是指将IP的值修改为2寄存器里面所存储的数值,从而实现跳转

mov指令

例如:mov         ax,[bx+数字]但是其他的通用寄存器不可以,bx,di都可以用作偏移地址来使用,使用ax,cx时会报错

        mov       dx,[bx+si]

                        dx,[bx+di]但是bx+si+di不行

寄存器寻址

寻址方式格式
立即数寻址[idata]
寄存器间接寻址[bx][bp][si][di]
寄存器相对寻址[bx+idata][bp+idata][si+idata][di+idata]
基址变址寻址[bx+si][bx+di][bp+si][bp+di]
相对基址变址寻址[bx+si+idata][bx+di+idata][bp+si+idata][bp+di+idata]

标志位

ZF(zero flag)零标志位如果计算结果为零显示ZR(zero)否则显示NZ(not zero)

PF(parity flag)奇偶标志位如果结果为PO(parity odd)表示奇数,如果为PE(parity even)表示偶数

SF(sign flag)符号标志位如果结果为负数显示NG(negative)表示负数否则显示PL(positive)表示正数

CF(carry flag)进位标志位如果没有溢出显示NC(not carry),溢出显示CY(carry ……)

OF(overflow flag)溢出标志如果数据溢出显示OV(overflow)否则显示NV(not overflow)没有溢出

数据如果时有符号位范围为-128~127无符号位位0~255

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值