其实我觉得,在学习
微机原理这一块,最让我觉得棘手就是这个
汇编语言了,在学它的过程中,觉得还是有点吃力,尤其是它的指令很多的,有时候总是把它给记混了,在上机的时候这个问题最突出了,如果是自己写程序的话,总是写不对,而且运行不了,唯一的解决办法就是看老师写在实验参考书上的程序了,但是自己的编程能力上没有得到有效的提高。
下面介绍一些数据传送指令:
⑴通用数据传送指令(General Purpose Data Transfer)
① MOV传送指令
指令格式:MOV 目的, 源
指令功能:将源操作数(一个字节或一个字)传送到目的操作数。
②PUSH进栈指令(Push Word onto Stack)
指令格式:PUSH 源
指令功能:将源操作数堆入
堆栈。
③POP出栈指令(Pop Word off Stack)
指令格式:POP 目的
指令功能:把当前的SP所指向的堆栈顶部的一个字送到指定的目的操作数。
④XCHG 交换指令(Exchange)
指令格式:XCHG 目的,源
指令功能:把一个字或字节的源操作数和目的操作数相交换,交换地址所存放的内容。
⑤XLAT表转换指令(Table Lookup-Translation)
指令格式:XLAT 转换表
或XLAT
指令功能:将一个字节从一种代码转换成另一种代码。
使用XLAT指令之前必须先建立一个表格,并将表格的起始地址装入BX
寄存器中。AL中事先也要送一个初值,这个值等于
表头地址与所要查找的某一项之间的位移量。
2.输入输出指令(Input and Output)
输入输出指令用来完成I/O端口与累加器之间的数据传送,指令中给出I/O端口的地址值。
⑴IN输入指令(Input)
指令格式:
①IN AL,端口地址
或IN AX,断口地址
②IN AL,DX 端口地址存放在DX寄存器中
或IN AX,DX
指令功能:从8位端口读入一个字节到AL寄存器,或从16位端口读一个字到AX寄存器。
⑵OUT输出指令(Output)
指令格式:
①OUT 端口地址,AL
或OUT 断口地址,AX,
② OUT DX ,AL 端口地址存放在DX寄存器中
或OUT DX ,AX
指令功能:从AL寄存器读入一个字节到8位端口,或从AX寄存器读一个字到16位端口。
3.地址目标传送指令(Address Object Transfer)
⑴LEA取有效地址指令(Load Effective Address)
指令格式:LEA 目的,源
指令功能:取源操作数的地址
偏移量,并把它送往目的操作数所在的单元
⑵LDS将双字指针送到寄存器和DS指令(Load Poniter using DS)
指令格式:LDS 目的,源
指令功能:从源操作数指定的存储单元中取出一个变量的4字节地址指针,送进一对目的寄存器。其中前两个字节(表示变量的偏移地址)送到指令中指定的目的寄