汇编语言程序设计教程 教学课件 作者 王庆生 4.ppt

汇编语言程序设计教程 教学课件 作者 王庆生 4.ppt

  1. 1、本文档共212页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
标号:符号地址,表示指令在内存中的位置。标号后应加冒号:。 指令助记符:指令名称,是指令功能的英文缩写。 操作数:指令要操作的数据或数据所在的地址。寄存器,常量,变量,表达式。 注释:每行以分号“;”开头,汇编程序不处理。 4.1.1 通用数据传送指令 MOV 传送 PUSH 进栈 POP 出栈 XCHG 交换 双操作数指令的规定 源操作数与目的操作数的长度必须一致。 源操作数与目的操作数不能同时为存储器。 目的操作数不能为CS和IP,因为CS:IP是程序当前地址。 例4.1 不同进制数表示的操作数 MOV AH, 255 ;十进制数 MOV AX, 345H ;十六进制数,后面加H MOV AX, 0DH ;十六进制数,因非数字(0~ 9)开头,前面加0 MOV AL, ;二进制数,后面加B 以下指令是错误的: MOV AH, 258 ;258超出8位(二进制) MOV AX, DH ;两个操作数长度不一致 例4.2 在指令中说明内存单元的类型,以便操作数长度匹配。 MOV [BX],AX 以下指令是错误的: MOV [BX],0 指令改写为: MOV BYTE PTR[BX],0 MOV WORD PTR[BX],0 例4.3 段地址寄存器的传送 MOV AX, DATA_SEG MOV DS, AX 段地址寄存器须通过寄存器得到段地址,不能直接由符号地址、段寄存器、立即数得到。 以下指令是错误的: MOV DS, DATA_SEG ;段寄存器不接受符号地址 MOV DS, ES ;段寄存器之间不能直接传送 MOV DS, 1234 ;段寄存器不接受立即数 MOV CS, AX ;指令合法,但代码段寄存器不能赋值 例4.4 传送常量 MOV AL, ‘A’ MOV AX, ‘A’ MOV AL, 41H 字符‘A’的ASCII码是41H,3条指令都使AL=41H。 例4.5 传送变量 MOV BX, TABLE ;假定TABLE是16位的变量 把变量TABLE的值送给BX。 以下指令是错误的: MOV BL, TABLE ;TABLE是16位的变量,操 作数长度不一致 MOV [BX], TABLE ;两个操作数不能同为内存单 元 例4.6 传送地址 MOV BX, OFFSET TABLE OFFSET 为偏移地址属性操作符,通常是把变量TABLE的偏移地址送给BX。 以下指令是错误的: MOV BL, OFFSET TABLE 不管变量类型如何,其有效地址总是16位。 例4.7 进栈和出栈 MOV BX,1234H PUSH BX POP AX 例4.8 在DEBUG下如下指令也是合法的: PUSH [2000] ;把地址为DS:[2000]的字送 往栈顶(SS:SP所指内存) POP [3000] ;把栈顶(SS:SP所指内存) 的字送往DS:[2000]的内存 例4.9 XCHG AX, BX ;两个寄存器长度相等 XCHG AX, [BX] ;AX要求[BX]也取字单元 XCHG AX, VAR ;VAR 必须是字变量 以下指令是错误的: XCHG AX, 5 ;显然操作数不能为立即数 XCHG [BX], VAR ;操作数不能同为内存单元 XCHG AX, BH ;操作数长度要一致 短格式:IN

您可能关注的文档

文档评论(0)

带头大哥 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档