- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.3.7 指令应用举例 P57~P63 例2.1~例2.4 2.9 分别写出实现如下功能的程序段 (1)将AX的中间8位作为高8位,BX的低4位和DX的高4位(作低4位)拼成一个新字。 Mov cl,4 Shl ax,cl And ax,0ff00h Mov cl,4 Shl bx,cl And bx,00f0h Or ax,bx Mov cl,4 Rcl,dx,cl And dx,000fh Or ax,dx (2)将CX的中间8位取反,其余位不变 Xor cx,0ff0h (3)将数据段以BX为偏移地址的连续3个单元中的无符号数求和。 Mov al,[bx] Mov ah,0 Add al,[bx+1] Adc ah,0 Add al,[bx+2] Adc ah,0 ;三数之和在AX中 (4)将数据段中以BX为偏移地址的连续4个单元中的内容颠倒过来。 MOV AX,[BX] MOV CX,[BX+2] MOV [BX+3],AL MOV [BX+2],AH MOV [BX+1],CL MOV [BX],CH (5) 将BX中的4位压缩BCD数用非压缩BCD数形式按序存放在AL,BL,CL,DL 解:设最高位BCD数在AL Mov si,bx Mov cl,4 Rcl si,cl And si,000fh Mov ax,si Xchg bl,bh And bl,0fh Mov dl,bh And dl,0fh Mov cl,4 rcl bh,cl And bh,0fh Mov cl,bh (6)不用乘法指令实现AL(无符号数)乘以20 解:20AL=(16+4)AL,并将乘积扩展到AX MOV AH,0 SHL AX,1 SHL AX,1 MOV BX,AX ;BX=4AL SHL AX,1 SHL AX,1 ;AX=16AL ADD AX,BX 2.4 常用伪指令 2.4 1. 微处理器选择伪指令 Intel系列微处理器不断发展换代并保持向上兼容,不同版本的MSAM对应不同代的微处理器的指令集和汇编伪指令。因此方式选择伪指令既是选择微处理机,实质上也是选择相应的指令集。 MASM宏汇编程序提供的方式选择伪指令如下: .8086——只汇编8086/8088的指令,此为默认方式,可以缺省。 .286或.286C——同.8086并只汇编80286非特权(实模式)指令及80287的指令 .286P——同.8086并汇编80286全部指令(包括保护方式下的特权指令) . 386或.386C——同.286并汇编80386非特权(实模式)指令及80387的指令 .386P——汇编80386全部指令(包括保护模式下的特权指令) 486或.486C——同.386并汇编80486非特权(实模式)指令及80387的指令 .486P——汇编80486全部指令(包括保护方式下的特权指令) .586或.586C——用于汇编Pentium微处理器非特权(实模式)指令 .586P——用于汇编Pentium微处理器保护方式在内的所有指令 微处理器选择微指令一般位于源程序的开始。 2.4.2 段的定义 使用完整的段定义伪指令来定义一个段,可具体控制汇编程序MASM和连接程序LINK在内存中组织代码和数据的方式。整个逻辑段必须用段定义语句括起来。 (1) SEGMENT——ENDS伪指令 段名 SEGMENT [定位方式] [组合方式] [字长选择] [‘类别名’] ? 段名 ENDS 每个逻辑段都以SEGMENT语句开头,以ENDS语句结束;两语句前的段名作为逻辑段的标识符,它必须是唯一的,确定该段在存储器中的位置。 1.字长选择 对32位微处理器新增了USE属性说明,又称段字说明。对16位CPU,默认的段长是16位,不使用USE选项。对32位CPU,有两种方式(默认选项是USE32): USE16:表示逻辑段最大长度为64K,访问该逻辑段采用16位寻址方式。 USE32:表示逻辑段最大长度为4G,访问该逻辑段采用32位寻址方式。 在实地址方式下应使用USE16,缺省选择是USE16。因此在8086和80286在实地址方式下段定义的格式是。 段名 SEGMENT [定位方式] [组合方式] [‘类别名’] ? 段名 ENDS 这三个可选操作数用于模块化程序设计中,源程序经过汇编告知连接程序LINK,各模块之间的通信方式和各段之间的组合方式,从而把各模块正确连接在一起。 2.定位方式 定位方式有[PARA]、BYTE、WORD和PAGE4种,它表明如何将组合后的段定位到存储器中。PARA表示本段从16的整倍
文档评论(0)