3380868088指令系统内容摘要:

执行前 20 10 POP BX指令执行示意图 (SP) 存储区 ( SS段) 执行后 (BX)=1020 (SP) (SP)+1 (SP)+2 BX 20 10 高地址 低地址 高地址 18 堆栈指令使用时应注意几点: ① 堆栈操作总是按 字 进行 ② 不能从栈顶弹出一个字给 CS ③ 堆栈指针为 SS:SP, SP永远指向栈顶 ④ SP自动进行增减量 ( 2, +2) 19 格式: XCHG reg, mem/reg 功能:交换两操作数的内容。 要求:两操作数中必须有一个在寄存器中; 操作数不能为段寄存器和立即数; 源和目地操作数类型要一致。 举例: XCHG AX, BX XCHG [2020], CL (3)交换指令 XCHG 20 (4)查表指令 XLAT 执行的操作: AL←[(BX)+(AL)] 又叫 查表转换指令 , 它可根据表项序号查出表中对应代码的内容。 执行时先将表的首地址 ( 偏移地址 ) 送到 BX中 , 表项序号存于AL中。 例如:内存数据段有一张 16进制数的ASCII码表 , 设首地址为 2020H, 如欲查出表中第 11个代码 ( 代码序号从 0开始 ) 即十六进制数 B的 ASCII码。 ASCII表在 DS段中 , 并假设 (DS)=4000H。 见下页图。 ‘ ’ 21 30 31 32 ... 39 41 42 ... 45 46 ... 42020H+0 42020H+0BH ‘0’ ‘1’ ‘2’ ‘9’ ‘A’ ‘B’ ‘E’ ‘F’ 十六进制数 ASCII码表 存储器 22 则可用如下几条指令实现 : MOV BX, 2020H ;( BX) ← 表首地址 MOV AL, 0BH ;( AL) ← 序号 XALT ; 查表转换 执行后得到:( AL) = 42H = ’ B’ 注意:转换表长度最大为 256个表项 (字节 )。 23 (5)字节 字转换指令 格式: CBW。 把 AL的符号位复制到 AH CWD。 把 AX的符号位复制到 DX 用途:用于有符号数的除法。 例如: (AL) = A7H,则执行 CBW后, AH的内 容为 FFH。 24 2. 输入输出( I/O)指令 只限于用 累加器 AL或 AX来传送信息。 功能 : (累加器 )←→I/O 端口 (1)输入指令 IN 格式 : IN acc,PORT。 PORT端口号 0~ 255 IN acc,DX。 DX表示的端口范围达 64K 例 :IN AL, 80H。 (AL) ← (80H端口 ) IN AL, DX。 (AL) ← ((DX)) 25 例: OUT 68H, AX。 (69H, 68H) ← ( AX) OUT DX, AL。 ((DX))←(AL) 在使用间接寻址的 IN/OUT指令时 , 要事先用传送指令把 I/O端口号设置到 DX寄存器 , 如: MOV DX, 220H IN AL, DX。 将 220H端口内容读入 AL (2) 输出指令 OUT 格式: OUT port,acc OUT DX,acc 26。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。