【汇编】入门-小知识点+基础小题

dh 表示的含义有二种可能:
(1)表示数据寄存器DX的高8位
(2)表示16进制数,dh = 13d

SI是源变址寄存器,用于存放源操作数的偏移地址,并且SI的内容有自动修改的功能,故称为源变址寄存器。
DI是目的寄存器,用于存放目的操作数的偏移地址,并且DI的内容有自动修改的功能,故称为目的变址寄存器。

将地址为1000h的存储单元里的字节内容拷贝到地址为2000h单元。Mov dh,[1000h] Mov [2000h],dh

将地址为1000h的存储单元里的字内容拷贝到地址为2000h单元。Mov si,[1000h] Mov [2000h],si

db在汇编中表示一个byte,就是一个字节8位,每次读取数据时,读完一个偏移量加1
dw在汇编中表示一个字,就是两个字节16位,每次读取数据时,读完一个偏移量加2
dd在汇编中表示一个双字,就是四个字节32位,每次读取数据时,读完一个偏移量加4

AX寄存器称为累加器(Accumulator),使用时主要用于存放数据,如存放算术、逻辑运算中的操作数或结果。也可临时时用于存放地址。
BX寄存器称为基址寄存器(BaseRegister),常用来存放访问存储器时的地址。
CX寄存器称为计数寄存器(CountRegister),常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器。
DX寄存器称为数据寄存器(DataRegister),常用于数据传递。在寄存器间接寻址中的I/O指令中存放I/O端口的地址。

byte ptr[BP]与word ptr[BX] 在汇编语言中 属于伪指令 用来规定存储单元的的数据
类型

9.将66h(字节)赋给地址为2000h的单元。

Mov byte ptr [2000h],66h

10.将66h(字)赋给地址为3000h的单元。

Mov word ptr [3000h],66h

算术移位 当乘数或除数是2n时,算术移位用来快速地完成对整数进行乘法或除法的运算。算数左移n位相当于乘上2n,执行方法是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补0。2)

逻辑移位 逻辑左移n位的执行方法,是把原来的数中每一位都向左移动n个位置,左面移出的高位丢弃不要,右面低位空出的位置上全部补"0"。 逻辑右移n位的执行方法是把原来数中的每一位都向右移动n个位置,右面移出的低位丢弃不要,左面高位空出的位置上全部补0。
逻辑移位:不考虑正负号算术移位:考虑正负号。

列出数字0~9、大写字母a~z、小写字母a~z的ascii码值
30h~39h 41h~5ah 61h~7ah
8086的寄存器中,有哪些16位寄存器可分为两个8位寄存器来使用?
答:ax(ah,al)、bx(bh,bl)、cx (ch,cl)、dx (dh,dl)

8086/8088的标志寄存器f种有哪些标志位?它们的名称和功能是什么?
答:cf—进位标志(carry flag)。若cf=1,表示算术运算时产生进位或借位,否侧cf=0.
移位指令会影响cf
pf—奇偶标志(parity flag).若pf=1,表示操作结果中“1”的个数为偶数,否侧pf=0。这个标志主要用于检查数据传送过程中的错误。
af—辅助进位标志(auxiliary carry flag).若af=1表示字节运算产生低半字节向高半字节的进位或错位,否则af=0。辅助进位也称半进位标志,主要用于bcd码运算的十进制调整。
zf—全零标志(zero flag).若zf=1,表示操作结果全为零,否则zf=0.
sf—符号标志(sign flag)。若sf=1,表示符号数运算后的结果为负数,否则sf=o.
of—溢出标志(qverflow flag).若of=1,表示当进行算术运算时,结果超过了最大范围,否则of=0.
if—中断允许标志(interrupt flag).若if=1,则cpu可以响应外部可屏蔽中断请求;若if=0,则cpu不允许响应中断请求。If的状态可由中断指令设置。
df—方向标志(direction flag).若df=1,表示执行字符串操作时按着从高地址向低地址方向进行;否则df=0.df位可由指令控制。
tf—单步标志(trace flag).又称跟踪标志。该标志位在调试程序时可直接控制cpu的工作状态。当tf=1时为单步操作,cpu每执行一条指令就进入内部的单步中断处理,以便对指令的执行情况进行检查;若tf=0,则cpu继续执行程序。
8086/8088指令系统中操作数的类型有哪几种?关于操作数的寻址方式有哪几类?

答:(1)立即数、寄存器数和内存单元数。
(2)立即寻址、寄存器寻址、寄存器间接寻址、值接寻址、寄存器相对寻址、基址加变址寻址、基址加变址相对寻址

算术左移SAL把目的操作数的低位向高位移,空出的低位补0;
算术右移SAR把目的操作数的高位向低位移,空出的高位用最高位(符号位)填补。
逻辑左移SHL(Shift Logical Left)和逻辑右移SHR(Shift Logical Right)。只有它们的移位方向不同,移位后空出的位都补0。
循环左移ROL(Rotate Left)和循环右移ROR(Rotate Right)。只是移位方向不同,它们移出的位不仅要进入CF,而且还要填补空出的位

DATA SEGMENT         
	...
DATA ENDS          

STACK SEGMENT STACK
;  DB 100 DUP(0)
STACK ENDS

CODE SEGMENT 'CODE'
     ASSUME CS:CODE,DS:DATA,SS:STACK
 START:
	...
	MOV AH,4CH       ;exit
	INT 21H
CODE ENDS
     END START
1、实现自然数1~100的累加,结果存放在字变量result中。

Data segment
Result dw ?
Data ends
Code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,100
mov ax,0
mov bx,1
l1:add ax,bx
inc bx
loop l1
mov result ,ax
jmp $
code ends
end start
2、已知buf开始的数据区中存放有10个英文字母,试编写一个程序将其中的小写字母全部转换成大写字母。

Data segment
Buf db "abcdeef123"
Data ends
Code segment
assume cs:code,ds:data
start:mov ax,data
mov ds,ax
mov cx,10
mov bx,offset buf
flag0:mov al,[bx]
cmp al,'a'
jb flag1
cmp al,'z'
sub al,20h
mov [bx],al
flag1:inc bx
loop flag0
jmp $
code ends
end start

xchg交换指令
push入栈
pop出栈
lea将源操作数、即存储单元的有效地址(偏移地址)传送到目的操作数
add 普通的加法指令
adc带进位的加法指令
inc inc加1指令
sub 减法指令
sbb sbb操作对象1,操作对象2功能:操作对象1 =操作对象1 -操作对象2
dec dec减1指令一
neg 将目的操作数的所以数据位取反加1
cmp 比较指令
mul : 无符号乘
div 除法
and 清除溢出和进位标志位,并根据目标操作数的值来修改符号标志位、零标志位和奇偶标志位
or 两个操作数的对应位之间进行(按位)逻辑或(OR)操作,并将结果存放在目标 操作数中:
not 指令触发(翻转)操作数中的所有位。其结果被称为反码
xor 在两个操作数的对应位之间进行(按位)逻辑异或(XOR)操作,并将结果存放在目标操作数中
test TEST AX,BX 与 AND AX,BX 命令有相同效果,只是Test指令不改变AX和BX的内容,而AND指令会把结果保存到AX中
sal 算术左移
sar 算术右移
shl逻辑左移
shr 逻辑右移
rol循环左移
ror循环右移rcl带进位循环左移
rcr带进位循环右移
jmp 跳转指令
j(czops,abe,gle)
loop
loopnz当 ECX中无符号数值大于零(减 1操作之后)且零标志位等于零时,继续循环。
call 1.将当前IP或CS和IP压入栈中2.跳转
ret用栈中的数据,修改IP内容,从而实现近转移
int :int n,n为中断类型码,它的功能是引发终端过程。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值