更灵活的定位内存地址的方法06 – 零基础入门学习汇编语言37

第七章:更灵活的定位内存地址的方法06

让编程改变世界

Change the world by program

问题7.9

编程,将datasg段中每个单词的前四个字母改为大写字母:

assume cs:codesg,ds:datasg,ss:stacksg

stacksg segment

   dw 0,0,0,0,0,0,0,0

stacksg ends

datasg segment

   db '1. display......'

   db '2. brows........'

   db '3. replace......'

   db '4. modify.......'

datasg ends

codesg segment

start:

    ……

codesg ends

end start

问题7.9分析

datasg中的数据的存储结构,如图:

宽客网,量化投资,宽客俱乐部

datasg中的数据存储情况

由于数据是连续存放的,我们可以将这4个字符串看成一个4行16列的二维数组,按照要求,我们需要修改每个单词的前四个字母,即二维数组的每一行的3~6列。

我们需要进行4×4次的二重循环,用变量R定位行,常量3定位每行要修改的起始列,变量C定位相对于起始列的要修改的列。

其实这个题也就是将前边的三个题目给“总结”概括了一下!

我们首先用R定位第1行,循环修改R行的3+C( 0≤C≤3 )列

然后再用R 定位到下一行,再次循环修改R行的3+C(0≤C≤3)列

如此重复直到所有的数据修改完毕。

处理的过程大致如下:

R=第一行的地址;

mov cx,4

s0:   C=第一个要修改的列相对于起始列的地址

mov cx,4

s:      改变R行,3+C列的字母为大写

C=下一个要修改的列相对于起始列的地址

loop s

R=下一行的地址

loop s0

我们用bx来作变量,定位每行的起始地址,用 si定位要修改的列,用 [ bx+3+si ]的方式来对目标单元进行寻址。

请在实验中白己完成这个程序。

小结

这一章中,我们主要讲解了更灵活的寻址方式的应用和一些编程方法,主要内容有:

寻址方式

[bx(或si、di)+idata]、

[bx+si(或di)]、

[bx+si(或di)+idata]的意义和应用;

二重循环问题的处理;

栈的应用;

大小写转化的方法;

and 、or 指令。

下一章中,我们将对寻址方式的问题进行更深入地探讨。

之所以如此重视这个问题,是因为寻址方式的适当应用,使我们可以以更合理的结构来看待所要处理的数据。

而为所耍处理的看似杂乱的数据设计一种清晰的数据结构是程序设计的一个关键的问题。

实验六

将本章中讲解过的程序上“鸡”调试,用debug跟踪其执行过程,并在过程中进一步深入理解所讲的内容。(毕竟有时候小甲鱼讲得比较快,大家要注重自己的加深理解!)

视频下载
技术, IT技术, 汇编语言, 视频教程

原文发布于宽客论坛,点击阅读原文


风险提示及免责条款

市场有风险,投资需谨慎。本文不构成个人投资建议,也未考虑到个别用户特殊的投资目标、财务状况或需要。用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部