[计算机硬件及网络]32hbyy05.ppt

  1. 1、本文档共156页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[计算机硬件及网络]32hbyy05

教学重点 数据传送 算数运算 位操作 5.1数据传送 数据传送是计算机中最基本、最重要的一种操作,由传送指令实现。 除标志寄存器传送指令外,均不影响标志位 通用数据传送指令 通用数据传送指令包括 MOV XCHG XLAT 传送指令MOV(move) 把一个字节,字或者双字的操作数从源地址传送至目的地址 例5-1:立即数传送 mov al,4 ;al←4,字节传送 mov cx,0ffh ;cx←00ffh,字传送 mov esi,200h ;esi,双字传送 mov byte ptr [esi],0ah ;ds:[esi] ←0ah,byte ptr说明是字节操作 mov dword ptr [esi+4],0bh ;ds:[esi+2] ←0000000bh, ;dword ptr说明是双字操作 两个操作数的类型要一致 绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非法指令 MOV AL,050AH ;非法指令:050Ah为字,而AL为字节 寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型 对于存储器单元与立即数同时作为操作数的情况,必须显式指明;byte ptr指示字节类型,word ptr指示字类型 要小心段寄存器的操作 不允许立即数传送给段寄存器 MOV DS,100H ;非法指令:立即数不能传送段寄存器 不允许直接改变CS值 MOV CS,[SI] ;不允许使用的指令 不允许段寄存器之间的直接数据传送 MOV DS,ES ;非法指令:不允许段寄存器间传送 例5-2:寄存器传送 mov eax,ebx ;eax←ebx mov ah,al ;ah←al mov [ebx],eax ;DS:[ebx]←eax 例5-3:存储器传送 mov al,[ebx] ; al←ds:[ebx] mov dx,[ebp] ;dx←ss:[ebp] mov es,[esi] ;es←ds:[esi] 例5-4 ;DA1单元的数据传送到DA2单元 .data DA1 dword DA2 dword .code mov eax,DA1 ;eax←DA1(将DA1内容送eax) mov DA2,eax ;DA2←eax ;DA1、DA2实际表示直接寻址方式 例5-5:段寄存器传送 mov [si],ds mov ax,es mov ds,ax 交换指令XCHG(exchange) 把两个地方的数据进行互换 例5-6:寄存器间交换 mov eax mov ebx,9ABCDEF0h xchg eax,ebx ;eax=9ABCDEF0h,ebx xchg ax,bx ;ax=5678h,bx=DEF0h xchg ah,al ;ax=7856h 例5-7:寄存器与存储器交换 .data b_da equ this byte w_da equ this word da dword 100 .code xchg eax,da ; 双字交换 ;也可以表达为xchg da,eax xchg ax,w_da;字交换 ;也可以表达为xchg w_da,ax xchg al,b_da; 字节交换 ;也可以表达为xchg b_da,al 3. 换码指令XLAT(translate) 将EBX指定的缓冲区中、AL指定的位移处的一个字节数据取出赋给AL 例5-8(1/3):代码转换 ;一位16进制数转换为ASCII码 .386 .MODEL FLAT,STDCALL include \masm32\include\io32.inc .stack 例5-8(2/3):代码转换 .data ASCII byte 30h,31h,32h,33h,34h,\ 35h,36h,37h,38h,39h,41h,42h,43h,\ 44h,45h,46h prompt byte input a number \ between:0~15,0dh, 0ah,0 例5-8(3/3):代码转换 .code start: mov ebx, offset ASCII ;ebx存放ASCII表的首地址 WriteString prompt ReadUDecByte al ;读入0~15之间的十进制数存放在al寄存器中 xlat ;换码al - ds:[ebx+al] WriteCrlf ;显示回车换行 WriteChar al ;显示al中存放的字符 ret end start 5.1.2 地址传送指令 地址传送指令将存储器单元的逻辑地址送至指定的寄存器 有效地址传送指令 LEA 指

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档