【汇编语言】向内存写入1~100,并求和

一次汇编语言练习


1、首先需要确认代码段地址,方便执行。
2、在程序的开始,应确认数据段的位置,此时应使用寄存器将地址送入ds中。
3、确认地址后开始循环,设置计数器cx为100(十进制),其十六进制为64H。
4、设置初始偏移地址bx=0H,使用汇编指令mov ds:[bx],cl将64H写入内存ds:[0]中。这里的cl是cx的低位字节。这是由于100在十六进制中为64H,cx的值应为0064H,并且此后递减,所以只需要mov cl。
5、进行loop循环
6、循环结束。此时偏移地址bx=64H,指向的内存地址中的数据为00H。
7、dec bx,bx自减,此时内存地址的数据为01H。
8、设置计数器cx为100,每过一次循环,cx-1。
9、进行倒序的循环,每一次都将内存地址的数据(1个字节)送入ax的低位字节al,同时设置高位字节为0H。完成之后,存储和的寄存器dx与ax进行相加(因为最终的和是16位的,所以需要16位寄存器存储)。第一次循环后,bx自减,进入下一次循环,在数学上的表示为1+2+3+…+100,最后bx值应为0H。
10、结束用户程序

具体代码如下

assume cs:code
code segment 
mov ax,2000H
mov ds,ax
mov bx,0

mov cx,100
s:	mov ds:[bx],cl
	inc bx
	loop s
	dec bx

mov cx,100
s1:	mov al,ds:[bx]
	mov ah,0
	add dx,ax
	dec bx
	loop s1
mov ax,4c00h
int 21h
code ends
end

masm.exe test.asm
link test.obj
debug test.exe
进入调试程序
在这里插入图片描述
g 000D
在这里插入图片描述
如上图所示,将64H写入了内存单元ds:[0]中,此时偏移为0
t

在这里插入图片描述
此后偏移地址+1
p
在这里插入图片描述
不断循环,直到循环终止。
d ds:0
在这里插入图片描述
此时偏移地址为64H,指向的内容是0H,为确保循环,需要让偏移地址减1(也可以设置cx=101)。
在这里插入图片描述
此时dx为64H,即十进制的100。
在这里插入图片描述
最终dx=13BA,即十进制的100。

  • 9
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值