- 1、本文档共188页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第2章-汇编语言程序设计
例如: MOV AX,1000H[BX] MOV AX,ES:10H[SI] MOV AX,TABLE[SI]; 位移量TABLE是表的首地址,间址寄存器SI的内容加上位移量就是要访问的表中的某一数据. 存放在基址寄存器(BX或BP)中的内容是基地址,它通常用来指向数据段中数组或字符串的首地址;而存放在变址寄存器(SI或DI)中的内容是变址,它通常用来访问数组中的某个元素或字符串中的某个字符。 这种寻址方式适合于数组的处理,通常用基址寄存器保存数组的起始地址,而用变址寄存器指示数组中元素的相对位置。 这种基址加变址的寻址方式也可以用来处理数组或表格,改变基址、变址寄存器的内容,就可以用来处理二维数组。 例如: MOV AX,[BX][SI] ;假设(DS)=3000H,(BX)=0158H,(SI)=10A4H,则偏移地址为0158H+10A4H=11FCH,物理地址为30000H+11FCH=311FCH。指令执行后,将311FCH和311FDH相邻两个单元的内容送AX寄存器,其中,高地址单元内容送AH,低地址单元内容送AL。 MOV AX,ES:[BX][SI] ;BX和SI寄存器的内容之和就是操作数的偏移地址,它在附加段中,它的段首地址就是ES寄存器的内容。 这种寻址方式为访问堆栈段中的数组带来方便,如果用基址寄存器BP存放堆栈顶的地址,用位移量表示栈顶到数组第一个元素的距离,则可以用变址寄存器来访问数组中的每一个元素。这种寻址方式也可以用于二维数组的寻址。 例如: MOV AX,100H[BX][SI] ;BX和SI寄存器的内容之和加上位移量就是操作数的偏移地址,操作数在数据段中。 MOV AX,ES:100H[BX][SI];该指令的操作数的偏移地址与上例相同,但它在附加段中。 MOV AX,100H[BP][SI] ;这是16位寻址,基址寄存器BP与变址寄存器SI的内容之和,加上位移量100H,就是操作数的偏移地址,操作数隐含在堆栈段中。将堆栈段中的偏移地址为BP+SI+100H的一个字数据送AX中。 ⑵ 间接端口寻址——用DX寄存器间接访问端口(16位端口) ,如果端口地址≥256(16位地址)可寻址65536个端口,就必须用间接端口寻址了。先把端口号(0000H~FFFFH)存放入DX寄存器中并间接访问该端口,用于间接寻址端口的寄存器只能使用DX寄存器。 MOV DX,200H ;将端口号200H存入DX中 OUT DX,AL ;将(AL)输出到(DX)所指的端口中 MOV DX,200H;将端口号200H存入DX中 IN AX,DX ;将(DX)所指的端口输入一个字到AX寄存器中 段内间接寻址 例:设(DS)=2000H,(BX)=1256H,(SI)=528FH,位移量VAL=20A1H,(232F7)=3280H,(264E5H)=2450H。则 JMP BX;执行该指令后,(IP)=1256H JMP WORD PTR [BX][SI];指令执行后,(IP)=(20000H+1256H+528FH)=(264E5H)=2450H JMP WORD PTR [BX+VAL];指令执行后,(IP)=(20000H+1256H+20A1H)=(232F7H)=3280H 段间间接转移 指令格式: JMP DWORD PTR [SI] JMP DWORD PTR [TABLE+BX] JMP DWORD PTR [ADDR] 其中,[SI]与[TABLE+BX]说明数据寻址方式为存储器寻址方式;DWORD PTR为双字操作符,说明转移地址需取双字为段间转移地址。其中高字是段地址,装入CS寄存器;低字是偏移地址,装入IP寄存器。 注意: (1)目的操作数与源操作数的类型必须一致。 (2)不允许立即数作为目的操作数。 (3)不允许在两个主存单元之间直接传送。 (4)不允许在两个段寄存器之间直接传送。 (5)不能将立即数送段寄存器。 (6)不允许用CS和IP寄存器作为目的操作数。 使用这条指令之前,必须先建立一张字节表格,其最大容量为256字节,表格的首地址由BX寄存器指向,相对于表格首地址的位移量存放在AL寄存器中。也就是说,AL寄存器中存放着待查的码,用它表示表中某一项与表首地址的距离,表格的内容就是需要转换的代码,该指令执行后,AL寄存器中得到转换后的代码。 1.加法类指令 (1)加法指令ADD (2)带进位的加法指令ADC (3)加1指令INC OF表示带符号数是否溢出。带符号数发生溢出,表示运算结果出错。这可以通过双进位判别法来判断:如果用 表示符号位的进位,用 表示数值部分最高位向符号位的进位,那么它们相异或的结果表示溢出标志的状态。即 ,
文档评论(0)