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



