汇编学习(五)——表处理程序

(一)串操作指令及重复前缀

一、串操作指令:

1、串传送指令:

(1)指令格式:

MOVS     dst,rsc
MOVSB   ;ES:[DI]<--DS:[SI],SI<—SI+/-1,DI<—DI+/-1
MOVSW   ;ES:[DI]<--DS:[SI];SI<—SI+/-2,DI<—DI+/-2

(2)指令功能:

A、将源串的一个元素传送到目的串的相应位置。

B、后面两种主要是按字节或者按字传送

 

2、串装入指令

(1)指令格式:

LODS         src
LODSB      ;AL<-DS:[SI],SI+/-1
LODSW      ;AX<DS:[SI],SI+/-2

(2)指令功能:

将源串的一个元素传送给累加器

 

3、串储存指令

(1)指令格式:

STOS      dst
STOSB     ;ES:[DI]<—AL,DI<—DI+/-1
STOSW     ;ES:[DI]<—AL,DI<—DI+/-2

(2)指令功能:

将累加器的值传送到目的串的一个元素位置

 

4、串比较指令

(1)指令格式:

CMPS    src,dst
CMPSB  ;DS:[SI]-ES:[SI],SI<-SI+/-1,DI<--DI+/-1
CMPSW  ;DS:[SI]-ES:[DI],SI<--SI+/-2,DI<--DI+/-2

(2)指令功能

A、将两个串对应位置上的元素进行比较,即进行减操作,结果不回送,但影响6个标志位

B、串比较指令的源操作数是被减数,目的操作数是件数。

 

5、串搜索指令

(1)指令格式:

SCAS    src,dst
SCASB   ;AL—ES: [DI],DI<—DI+/-1
SCASW   ;AL—ES: [DI],DI<—DI+/-2

(2)指令功能:

用累加器AL或着AX作为被减数,与串的一个元素详见,不送回结果,单影响6个标志位

 

二、串重复前缀

1、指令格式:

REP                 ;若CX不等0,则执行串操作,CX<—CX-1
                    ;若CX等于0,则结束串操作
PEPR或PREZ          ;若CX不等于0且ZF=1,则执行串操作,CX<-CX-1
                    ;若CX=0或者ZF=0,则结束串操作
REPNE或REPNZ        ;若CX不等于0且ZF=0,则执行串操作,CX<—CX-1
                    ;若CX=0或ZF=1,则结束串操作

 

2、注意点:

(1)使用任何一条串操作指令之前,必须根据对串地址修改的方向对方向标志DF进行修改

CLD    对方向标志DF清0,即串操作为加
STD    对方向标志DF置1,即串操作为减

(2)使用MOVS,LODS,CMOS之前,要对DS和SI初始化,使用MOVS,STOS,CMPS,SCAS前要对ES和DI初始化

(3)若源串和目的串在同一个段中,ES和DS要初始化成相同的数值。

 

(二)无符号数和带符号数条件跳转指令

一、无符号数条件跳转指令

 

二、有符号数跳转指令

时间: 2024-10-29 19:11:55

汇编学习(五)——表处理程序的相关文章

基于8086CPU微处理器的汇编学习之MOV指令

汇编指令:MOV的作用是往某个寄存器中存入数值. 格式:mov  寄存器名,数值                数值-->寄存器 mov  寄存器A,存器寄B          B-->A PS:必须前后位数匹配,如: mov   ah,bx     ;error   ah is 8 bit,bx is 16 bit mov   ah, bh    ;right    ah and bh all is 8  bit mov   cx,dx     ;right     cx and dx al

基于8086CPU微处理器的汇编学习之ADD指令

ADD指令: 把两个数值相加,将结果放到第一个寄存器里面. 格式: ADD  寄存器名,数值 ADD  寄存器名,寄存器名 add ax,11 add bx,22 PS:清空数据: mov ax,0000 两者数值的存储容量位数要匹配 ----------------------------------------------------------------------------------------------- 用汇编语言编写一个小程序:1122H + 9000H +   AC02H

AT&amp;T汇编学习笔记

AT&T汇编和intel汇编的区别 (1)在Intel格式中大多使用大写字母,而在AT&T格式中都是用小写字母. (2)在AT&T格式中,寄存器名要加上"%"作为前缀,而在intel格式中则不带前缀. (3)在AT&T的386汇编语言中,指令的源操作数与目标操作数的顺序与在intel的386汇编语言中正好相反.在intel格式中是目标在前,源在后:而在AT&T格式中则是源在前,目标在后.例如,将寄存器eax的内容送入ebx,在intel格式中为&

Beaglebone Back学习五(PWM测试)

PWM测试 参考链接 1 Enable PWM on BeagleBone with Device Tree overlays 2Using PWM on the Beaglebone Black 3 Beaglebone Coding 101: Buttons and PWM 4 Using PWM outputs 5 beaglebone-black-cpp-PWM 6 Enabling PWM Support in the kernel 7 Beaglebone Back学习五(PWM测试

8086汇编学习小结———实时更新

初学IBM-PC 8086,对INT指令不是很理解.现从网上总计如下: 表:DOS系统功能调INT 21H AH 功能 调用参数 返回参数 00 程序终止(同INT 20H) CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异步通迅输入 AL=输入数据 04 异步通迅输出 DL=输出数据 05 打印机输出 DL=输出字符 06 直接控制台I/O DL=FF(输入)DL=字符(输出) AL=输入字符 07 键盘输入(无回显) AL=输入字符 08 键盘

汇编学习笔记-序章

最近突然对汇编语言开始感兴趣,于是说干就干了. 之前也自学过一点汇编,是跟着王爽老师的<汇编语言(第3版) >这本书学习的,已经是有5 6前年的样子了.当时觉得这本书写的非常通俗易懂是一本非常好的启蒙书籍,但是最近在翻阅的时候却觉得这本书知识点介绍的非常杂乱没有个章程,感觉像是没组织过一样想到哪里写到哪里.哈哈,个人愚见,王爽老师的粉丝不要喷我. 于是乎我去各种百度汇编学习的书籍推荐,在知乎.csdn找到了好几本推荐的书,然后就一股脑买了4本.所以我简单的根据书名排了个阅读顺序: 80x86汇

TweenMax动画库学习(五)

目录            TweenMax动画库学习(一)            TweenMax动画库学习(二)            TweenMax动画库学习(三)            TweenMax动画库学习(四)            TweenMax动画库学习(五)  

NodeJS学习五 之网页显示

我们新建一个Server.js. 然后运行cmd 找到server.js 路径.  node server.js 浏览器中输入http://localhost:8888/ 你会发现,网页上出现了 Hello World NodeJS学习五 之网页显示,布布扣,bubuko.com

AT&T汇编学习笔记(一)

file命令使用介绍 file最常用的场景就是用来查看可执行文件的运行环境,是arm呢,还是x86呢,还是mips呢?一看便知 $ file a.out a.out: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0xa240b1958136fc294a6ee5833de2a0fc8c9e

汇编学习环境搭建

一 系统环境 win10 pro x86 masm 5.0 下载地址:http://download.pchome.net/development/linetools/detail-9028.html 二 编译环境搭建 1 将masm 5.0 下载下来,这个是免安装版的, 解压缩, 将MASM.EXE所在的目录添加到环境变量path里面. 2 使用方法 <1> 在cmd窗口(注意这个cmd跟下面的command不是一个东西)输入"masm 汇编源码文件;", 回车, 如果编