西安电子科技大学 834考研汇编言语收拾 – 哔哩哔哩(西安电子科技大学中外合作办学)
????????????????????????????? ? ? ?汇编言语(834食用)
我们自行温习机器指令,助记符,常用指令,常用psw。
机器指令:? 1000100111011000
汇编指令:? mov? ax, bx
上述的机器指令和汇编指令是逐个对应的,它们操作的意义都是:把存放器 bx 中的内容送到 ax 中。
其间将汇编指令变换为的机器指令的进程及编译进程(译码)。
以参阅裘书的 8086cpu为汇编环境
8086寻址方法、存储方法
内存中的字存储? 存放器的最大宽度为16位,及存放器存储巨细为2字节。
例: ax通用存放器 存储 f
f00h,则其间高字节(8bit)ffh存储在ah中,则其间低字节(8bit)00h存储在al中
及基址左移4位,然后将空出的第四位加上偏移地址。
8086cpu中有一个ds存放器, 一般用来存放要造访数据的段地址。 而且咱们需要将一组内存单元界说为一个段,来存储咱们的数据。
例题:
mov bx,1oooh
mov ds,bx
mov al,[0]
上面的3条指令将 1ooooh(1000:0)中的数据读到al中。
及段基址为 1000h(存储在ds中),偏移地址为0(用[0]标明)
此外还包括 代码段存放器cs,仓库段存放器ss,附加段存放器es。(不重要)
而存放器 si、bp别离为 ds、ss的默许偏移地址存储器。
传送指令(拓宽)xchg oprd1, oprd2 ; 标明将两个数交换对应:
{
? ?int temp = oprd1;
? ?oprd1 = oprd2;
? ?oprd2 = temp;
}
lea bx, bufr ; 将bufr的地址偏移量送入bx
lds si, [bx] ; ds×16+bx构成的地址,低字节空间送入di,高字节送入ds
les ; 对应es段存放器,与lds类似
cbw ; 将字节变换为字,高位补0
{
mov al, 4fh
cbw
; 最终的成果为 ax = 004fh
}
cwd ; 将其时存放器和dx联合存储,拓宽为4字节(联系原码/补码的乘除)(将ax内的符号位拓宽到dx)
{
mov ax, 834eh
cwd
; 最终成果为 dxax = ffff834eh
}
管用运算指令(拓宽)inc ax ; 标明将 ax存放的操作数加一 对应 i++
dec cx ; 标明将 cx存放的操作数减一 对应 i–
adc ;带进位的加法指令(用于多字节加法,多字节加法需要多个存储器,需要思考进位)
sbb ;带借位的减法指令
neg oprd ; 对操作数求补运算、
cmp oprd1, oprd2 ; 即操作数1-操作数二 只改动psw而不讲运算成果写回
mul bl ; 标明 al×bl 写入 ax 见上图个存放器功用表
div bl ; ax/bl 商在al,余数在ah
逻辑运算指令(拓宽)and ; 与
not ; 非
or? ; 或
xor ; 异或
test ; 同add,可是成果不写回,只改动psw
循环指令、串操作指令暂时不提
程序控制指令(扩展)jmp oprd ; 无条件跳转到 意图地址
call near ptr oprd; 标明 段间调用 首地址oprd的子进程,实施完后回到主程序
loop oprd ; 循环控制指令 实施一次cx-1,cx≠0持续循环
语句格局[标号] 指令助记符 [操作数] ;注解
伪指令: 界说存储空间和存储数据的长度
数据伪指令table db ? ;table 内存单元存放内容随机
buffer db 100 dup(0) ;以buffer 为首地址的100个字节接连存放00h
符号伪指令
对应c言语define
段界说伪指令段名 segment [定位类型] [组合类型] [品种]
……
段名 ends
;定位类型 及 字节、字、双字等
;组合类型一般为 stack 仓库段
;品种 包括代码段code、数据段data、仓库段等
设定存放器伪指令
assume cs:code,ds:data,ss:stack ;及不一样段对用不一样的存放器存储
进程界说伪指令进程名 proc [类型]
? ….
? ret
进程名 endp
汇编代码
其间 mov ah,4ch 和 int 21h,对应c言语中的return 0,及程序回来。
代码不讲最终,考834的同学需要将《核算机构成与方案》中的例题 4.1-4.4读懂,熟练掌控。至于代码的编写,恰当于算法方案,不会太难,难度根柢也就是写两个for的循环,我们多操练。
发表评论