汇编语言(3)

本文介绍了汇编语言中的Loop指令,用于实现计数型循环,通过示例演示了如何使用Loop指令计算2的乘方、乘法运算以及处理数据越界问题。同时,涉及了MASM指令集和调试工具的使用。
摘要由CSDN通过智能技术生成

从零开始的汇编语言(3)

不要问为什么中间断了,问就是连接编译的部分忘写了,找时间会补上的(应该吧)

(…)与[…]与[bx]

[…](汇编语言规定)表示一个内存单元

在这里插入图片描述

(…)表示一个内存单元或寄存器里的内容(方便学习做出的约定)

在这里插入图片描述

第二个中mov ax [2],表示偏移地址为2,将存于ds寄存器中的段地址加该偏移地址,在这个地址里存的数据,赋到ax中。

注:inc bx 表示bx+1.(increase)

约定:符号idata表示常量

例:mov ax idata表示mov ax 1,mov ax 2,mov ax 3等

问题5.1:
在这里插入图片描述

Loop指令

loop功能:实现循环 为计数型循环,

当执行到loop指令时,程序会进行如下操作:

​ 1、(cx)=(cx)-1;

​ 2、判断cx的值

​ 不为零则跳转到标号处执行程序

​ 为零则向下执行

但cx中要提前存放循环次数,而且要定义一个标号,不然loop将不知道要跳转到何处。

测试程序

assume cs:code

code segment

mov ax,2

mov cx,11

s: add ax,ax

loop s
mov ax,4c00h

int 21h

code ends

end

该程序执行结果:2->4->8->16->32->64…

先masm 目标文件;

link 目标文件;

debug +u命令查看(选)

r命令查看寄存器(选)

t命令单步执行

在这里插入图片描述

loop指令实例:

1、2的乘方
在这里插入图片描述

2、计算123*236,将结果储存在ax中

   mov ax,0

   mov cx,236

s: add ax,123

   loop s



额:loop指令再例:

问题:计算ffff:0006 字节单元中的数乘以3,结果储存在dx中。

答案:

在这里插入图片描述

注:在汇编源程序中,数据不能以字母开头,所以要在第三行数据ffff前面加0

要注意数据的越界问题,本题中ffff:0006 单元中的数是一个字节型数据,在0~255之间,用它和3相乘,结果不会大于65535 不会越界。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值