7更灵活的定位内存地址的方法.docxVIP

  1. 1、本文档共4页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
7更灵活的定位内存地址的方法

第7章 更灵活的定位内存地址的方法7.1 and和or指令例:转换:通过改写第5位的值大写 十六进制 二进制 小写 十六进制 二进制A4101000001a6101100001B4201000010b6201100010C4301000011c6301100011D4401000100d6401100100E4501000101e6501100101F4601000110f6601100110assume cs:code,ds:datadata segmentdb BaSiC//将小写变成大写db iNfOrMaTiOn//将大写变成小写data endscode segmentstart:movax,datamovds,ax//设置DS指向data段mov bx,0mov cx,5s:mov al,[bx]and al//将ASCII码的第5位变成0,变成大写字母mov [bx],alinc bxloop smov bx,5mov cx,11s0:mov al,[bx]or al//将ASCII码的第5位变成1,变成小写字母mov [bx],alinc bxloop s0mov ax,4coohint 21hcode endsend startand:逻辑与mov aland al执行后:al结论:将第几位变成0,第几位数值为0,其余为1or:逻辑或mov aloral执行后:al结论:将第几位变成1,第几位数值为17.5[bx+idata]内存中2000:1000 BE 00 06 00 0000 ......mov ax,2000hAX 2000Hmovds,axDS 2000Hmov bx,1000hBX 1000Hmov ax,[bx]AX 00BEHmovcx,[bx+1]CX 0600H//[bx+1]=1000h+1h=1001haddcx,[bx+2]CX 0606H//[bx+2]=1000h+2h=1002h7.6用[bx+idata]的方式进行数组的处理assume cs:code,ds:datadata segmentdb BaSiC;转换成大写db MinIX;转换成小写data endscode segmentstart:movax,datamovds,axmov bx,0mov cx,5s:mov al,0[bx]and almov 0[bx],almov al,5[bx]//5[bx]等同于[bx+5]or almov 5[bx],alinc bxloop scode endsend start7.7 SI和DISI,DI不能分为两个8位寄存器来使用例:将字符串复制到后面的数据区中assume cs:code,ds:datadata segmentdb welcome to masm!db ................data endsCode segmentStart: movax,dataMovds,axMov si,0Mov di,16Mov cx,8Mov cx,8S: mov ax,0[si]S: mov ax,[si]Mov 16[si],axMov [di],axAdd si,2Add si,2Loop sAdd di,2Loop sMov ax,4c00hInt 21hcode endsend start7.8 [bx+si]和[bx+di]内存中2000:1000 BE 00 06 00 0000 .....mov ax,2000hax=2000Hmovds,axds=2000Hmov bx,1000hbx=1000Hmov si,0si=0000Hmov ax,[bx+si]ax=00BEHinc sisi=0001Hmovcx,[bx+si]cx=0600Hinc sisi=0002Hmovdi,sidi=0002Hadd cx,[bx+di]cx=0606H7.9 [bx+si+idata]和[bx+di+idata]mov ax,[bx+200+si]mov ax,[200+bx+si]mov ax,200[bx][si]mov ax,[bx].200[si]mov ax,[bx][si].200例:内存中2000:1000 BE 00 06 00 6A 22 .....mov ax,2000hax=2000Hmovds,axds=2000Hmov bx,1000hbx=1000Hmov si,0si=0000Hmov

文档评论(0)

haihang2017 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档