微型计算机原理速通期末复习

news2024/11/17 7:44:26

文章目录

  • 微机基础
      • 原码、反码、补码、移码
      • 溢出
      • 实数型
  • 功能结构
      • 8086/8088内部结构
      • 80286内部结构
      • 80386/80486内部结构
      • 标志寄存器FLAGS
      • 寄存器阵列
      • 段寄存器
      • 寻址
      • 标志寄存器EFLAGS
      • 分段结构
  • 数据寻址方式
      • 立即寻址
      • 直接寻址
      • 寄存器寻址
      • 寄存器间接寻址
      • 寄存器相对寻址
      • 基址-变址寻址
      • 基址-变址-相对寻址
      • 隐含寻址
      • 比例变址寻址
      • 基址比例变址寻址
      • 相对基址比例变址寻址
  • 程序转移寻址方式
      • 段内直接寻址
      • 段内间接寻址
      • 段间直接寻址
      • 段间间接寻址
  • 常用伪指令
      • 定义 DB、DW、DD
      • 等值 EQU
      • 等号 =
      • $ 运算符
      • 段基址 SEG
      • 偏移地址 OFFSET
      • PTR 类型属性符
  • 数据传送指令
      • mov
      • movsx、movzx
      • push、pop
      • xchg
      • in、out
      • lea
  • 算数运算指令
      • add
      • adc 带进位加法
      • inc 自加
      • sub
      • sbb 带进位减法
      • dec 自减
      • neg 求补
      • cmp 比较
      • mul
      • Imul 带符号乘法
      • div
      • Idiv 带符号除法
      • DAA BCD码修正
  • 逻辑运算指令
      • and
      • or
      • not
      • xor
      • test
      • 移位
  • 标志指令
  • 转移指令
  • 调用指令
      • call
      • proc
      • RET N(偶数)
  • 串操作指令
      • 串传送
      • 串装入
      • 串存储
      • 串比较
      • 串搜索
  • 汇编语言结构
      • 方式定义
      • 段定义
      • 段约定
      • END结束
      • 返回DOS
      • DOS 调用模式
      • 宏指令
  • 引脚功能
    • 总线
    • INTR、NMI
    • HOLD、HLDA
    • 最小模式
    • 最大模式
    • 总线三态
    • 总线分时复用
    • 总线时序
    • 复位状态
    • 8086和8088CPU的区别
    • 读写较慢,CPU申请等待时钟
  • 中断异常
    • 8086中断
    • 8086异常
    • 优先级
    • 中断响应过程
    • 中断控制器8259A
    • 8259A工作方式
        • 1、设置优先级
        • 2、屏蔽中断源
        • 3、中断结束处理
        • 4、总线连接方式
        • 5、中断触发方式
    • 中断程序与CALL程序区别
    • 8259A中断结束方式
    • 中断处理过程、中断处理程序
    • 8259A初始化命令字
    • 8259A操作命令字
  • debug
    • -a 汇编命令
    • -d 显示内存
    • -e 修改内存
    • -f 填充内存
    • -G 执行命令
    • -h 16进制计算
    • -i 端口输入
    • -o 端口输出
    • -L 读盘命令
    • -W 写盘命令
    • -M 内存搬家
    • -N 写文件命令
    • -r 显示修改寄存器
    • -s 搜索内存
    • -t 执行并显示环境
    • -u 反汇编

微机基础

原码、反码、补码、移码

正数原码、反码、补码相同

负数反码是原码除符号位按位取反,补码是反码+1

移码是补码的符号位取反,其他不变(只是用1表示正数,0表示负数)

[+0]= (0000 0000)
[-0]= (1111 1111)

(x+y)= (x)补 + (y)(x-y)= (x)补 + (-y)

溢出

只有 (正+正=)才会上溢,(负+负=)才会下溢

Cs:最高位符号位的进位或借位
Cp:数值最高位的进位或借位

Cs=0,Cp=1 正溢出
Cs=1,Cp=0 负溢出

有符号数运算:OF为1 溢出
无符号数运算:CF位1 溢出

实数型

功能结构

8086/8088内部结构

请添加图片描述

执行部件 EU :

  • 算数逻辑单元 ALU
  • 16位标志寄存器
  • 4个通用寄存器、2个16位指针寄存器、2个16位变址寄存器
  • 指令译码器
  • 总线控制电路

总线接口部件 BIU:

  • 4个16位段寄存器
  • 1个16位指令指针
  • 1个地址加法器
  • 1个指令流队列
  • 总线控制电路
EU 从 BIU的指令流队列中取指令,发出相应的控制命令序列,执行指令
操作数地址EU计算出16位的偏移量送BIU,BIU将其与段寄存器合成,得到一个20位的内存单元物理地址,与内存单元交换数据
也可以根据EU请求和IO接口电路交换数据

80286内部结构

具备8086/8088最基本功能
还增加了:虚拟存储、特权保护、任务管理等功能,支持多用户、多任务系统

80386/80486内部结构

标志寄存器FLAGS

6个状态标志:

  • CF 进位标志(无符号数有无溢出)
  • PF 奇偶标志(低8位中1的个数)
  • AF 辅助进位标志(低四位有无向低五位进位借位1)
  • ZF 零标志(全零为1)
  • SF 符号标志(负数1正数0)
  • OF 溢出标志(溢出1)

有符号数 a,b比大小(a-b)

OF ⨁ SF = 1 ,a < b

OF ⨁ SF = 0, a ≥ b

3个控制标志

  • DF 方向标志(字符串指令的方向,逆向1)
  • IF 中断允许标志(可接受并响应中断1)
  • TF 陷阱标志(控制单步中断1)

寄存器阵列

4个通用寄存器:

  • AX 累加器
  • BX 基址寄存器
  • CX 计数器
  • DX 数据寄存器

2个变址寄存器:

  • SI 源变址寄存器
  • DI 目的变址寄存器

2个指针寄存器:

  • SP 堆栈指针
  • BP 基址指针

段寄存器

  • CS 代码段基址
  • DS 数据段基址
  • ES 附加段基址
  • SS 堆栈段基址

寻址

  • 寻址程序:CS + IP
  • 寻址数据:DS|ES + SI|DI|BX|BP
  • 寻址堆栈:SS + SP|BP

标志寄存器EFLAGS

  • IO 输入输出特权标志(4个状态,00特权最高,11最低,特权可执行否则保护异常)
  • NT 嵌套任务标志(发生中断时或调用指令时发生任务切换,即当前任务嵌套在另一个任务中,1)

请添加图片描述

分段结构

  • 逻辑地址: (段地址 : 偏移地址)
  • 物理地址: (段地址 * 10H + 偏移地址)

请添加图片描述

数据寻址方式

立即寻址

mov  ax, 1200h
/*
指令中的源操作数是立即数,即参加操作的数据本身,
立即寻址仅适合于源操作数,在代码段。

直接寻址

Mov  ax, [1200h]
; 默认是在数据段 DS,给出偏移地址。
mov ax, es:[1200h] ; 修改指定段

寄存器寻址

mov ax, bx ; 在通用寄存器中,所以速度最快

寄存器间接寻址

mov ax, [si]
; 操作数在内存中,偏移地址为寄存器的值
;(也叫间接寄存器,bx、bp、si、di)
; bx、si、di 默认在数据段DS 
; bp 默认在堆栈段SS
; bx、bp 基址寻址,si、di 变址寻址

寄存器相对寻址

mov ax, [bx+ data] ; 偏移地址为寄存器值加一个位移量

基址-变址寻址

mov ax, [bx][si]
; 基址寄存器 +变址寄存器
; 不能都为基址寄存器,也不能都是变址寄存器
; bx 默认是 ds段,bp 默认是 ss段

基址-变址-相对寻址

mov ax, data[bx][si] ; 加了一个位移量

隐含寻址

mul bl
; al * bl -> ax
; 指令中隐含了一个或两个操作数的地址

比例变址寻址

mov eax, array[ebx * 4] ; [位移量 + 变址寄存器 * 比例因子]
mov AL, [SI + 2]

基址比例变址寻址

mov ax, [ebx + ecx * 4] ; [基址寄存器 + 变址寄存器 * 比例因子]

相对基址比例变址寻址

mov al, array[ebp + edi * 2] ; [位移量 + 基址寄存器 + 变址寄存器 * 比例因子]

32位变址寻址才有比例因子,16位只有SI、DI

请添加图片描述

程序转移寻址方式

段内直接寻址

jmp 0021
jmp short next

段内间接寻址

jmp bx
jmp data[bx][si]

段间直接寻址

jmp 51bb:0024
jmp far ptr next ; far ptr 段间转移操作符

段间间接寻址

jmp dword ptr [bx]

常用伪指令

定义 DB、DW、DD

N1 DB 12H,2,3,22	; 变量名 DB 数据 ,数据如果是字母开头,前面要加0
N2 DB 3 DUP(?)	; 3 dup 表示重复的次数,?表示随机数

等值 EQU

NUM EQU 22
MOV al, MUM	; 等价于 mov al, 22

等号 =

; 同 EQU
; 区别是 EQU定义的后续不能更改,=定义的后续可以重新定义

$ 运算符

; 返回汇编地址计数器的当前值
; 紧跟DB、DW、DD后面统计字符串长度
N1 DB 12H,2,3,22
LEN EQU $-N1

段基址 SEG

MOV AX, SEG DATA ; 返回逻辑段的段基址

偏移地址 OFFSET

MOV BX, OFFSET BUF ; 返回相对段首的偏移地址

PTR 类型属性符

P T R ( 内 存 单 元 寻 址 方 式 ) = { B Y T E 字节 W O R D 字 D W O R D 双字 PTR(内存单元寻址方式)= \begin{cases} BYTE& \text{字节}\\ WORD& \text{字}\\ DWORD& \text{双字} \end{cases} PTR=BYTEWORDDWORD字节双字

P T R ( 子 程 序 名 称 ) = { F A R 远 N E A R 近 PTR(子程序名称)= \begin{cases} FAR& \text{远}\\ NEAR& \text{近}\\ \end{cases} PTR={FARNEAR

; 临时修改说明类型属性
; 指令操作数至少有一个类型属性确定,否则必须用PTR说明内存操作数的类型
; 若两个操作数类型属性明确,则必须保持一致,否则使用PTR临时改变其中内存操作数的类型
; 类型明确的操作数
寄存器、变量名直接寻址的
; 类型不明确的操作数
立即数、非变量名直接寻址的,也就是带[ ]的

请添加图片描述

使用:

  • 源操作数是立即数,目标操作数类型不明确,必须用PTR说明类型属性
  • 二者类型属性不一致,必须用PTR临时修改操作数的属性
  • 单操作数时(INC、DEC等),类型不明确,必须使用PTR说明属性

数据传送指令

mov

  • 立即数只能作为源操作数

  • 字长宽度必须相同,否则使用PTR说明属性

  • 不允许同时为段寄存器、不允许同时为操作数

  • 目标操作数是段寄存器时,源操作数不能是立即数

  • ip 和 cs 不能作为目标操作数,flags 一般也不作为操作数

  • 不影响标志位

movsx、movzx

带符号扩展 movsx:

movsx eax, cx ; cx = 0AB20H
; eax = FFFFAB20H,cx 是负数,符号位为1,所以用1扩展

不带符号扩展 movzx:

movzx eax, cl ; cl = 0FAH
; eax = 00000FAH,cx 是负数,符号位为1,这里用0扩展

push、pop

以字为单位,16 位

可以是段寄存器、通用寄存器、立即数、存储单元、所有的寻址方式,但8086不允许是立即数

push 高地址到低地址,pop 低地址到高地址

xchg

交换操作数的内容,类型必须相同,其中之一必为寄存器

操作数可以说是除立即数以外的任何寻址方式,可以同时为寄存器,但不能同时为段寄存器,不影响标志位

xchg AH, BL
xchg ES, AX

in、out

面向 io 端口操作

in al, port

out port, al

存放到 al 或 ax 中,port 指的是地址

port 端口地址寻址

  • 直接寻址:8 位,即 256 个端口
  • 间接寻址:16 位,端口地址必须由 dx 指定,即 64k 个端口

lea

LEA bx, [di] ; 取出源操作数的有效地址
; 源操作数不允许是立即数和寄存器寻址,只能是存储器寻址
; 目的操作数不能是段寄存器

算数运算指令

均会影响6个标志位,属性要一致

add

add [si], [bx] ; 不允许同时是存储器操作数
add ds, ax		 ; 不允许把段寄存器作为操作数

adc 带进位加法

adc oprd1, oprd2; 多加一个进位标记符 cf,a+b+c
; 多用于多字节数相加,使用前需要先把 cf 清零
; clc 指令,cf 清零

inc 自加

inc oprd ; 自加 1,不能是段寄存器或立即数,不影响进位CF

sub

a-b

sbb 带进位减法

a-b-c

dec 自减

a-1 ; 不影响进位CF

neg 求补

neg oprd ; 0-a,相反数

cmp 比较

cmp oprd1, oprd2 ; a-b,不改变原值,不返回结果,只改变标志位
; 目的操作数不能是立即数、必有一个是寄存器,不能是段寄存器

mul

mul oprd
; 字节相乘,8位,被乘数 AL,乘数 oprd,高位积 AH 低位积 AL
; 字相乘,16位,被乘数 AX,乘数 oprd,高位积 DX,低位积 AX

; 乘数、被乘数等长,积双倍长

Imul 带符号乘法

; 有符号乘法,乘数先变为原码,去掉符号位绝对值相乘,符号由原符号位异或得到,负数则再取补码
Imul oprd1, oprd2 ; oprd1 = oprd1 * oprd2
Imul oprd1, oprd2, 立即数 ; oprd1 = oprd2 * 立即数 

div

div oprd
; 字节相除,8位,被除数 AX,除数 oprd,商 AL,余数 AH
; 字相除,16位,被除数 高DX 低AX,除数 oprd,商 AX,余数 DX

; 被除数是除数的长度两倍
; 目的操作数必须是累加器 AX,源操作不能是立即数

Idiv 带符号除法

; 有符号除法,除数先变为原码,去掉符号位绝对值相除,符号由原符号位异或得到,负数则再取补码

DAA BCD码修正

mov al, 06h
add al, 07h	; 得到 0Dh (13),0000 1101
DAA					; BCD码修正 (13) 0001 0011

请添加图片描述

逻辑运算指令

and

and bl, [si] ; 按位相与
and al, 0fH	 ; 部分位为 0
and ax, ax 	 ; 不改变操作数下,清零 of 和 cf

or

or bl, [si]  ; 按位相或
or al, 0fH	 ; 部分位为 1
or ax, ax 	 ; 不改变操作数下,清零 of 和 cf

not

not oprd	; 按位取反,返回原地址
; 不能是立即数
; 对标志位无影响

xor

xor oprd1, oprd2
xor ax, ax 	; 自身清零

test

test oprd1, oprd2		; 执行 and,结果不返回 oprd1
; 用于测试某些标志位的状态

移位

; 算数左移和逻辑左移一样
; 逻辑右移补零填充,算数右移用原来的最高位来填充(理解为符号位)
; 带进位循环左移,带进位循环右移,CF也参与循环
; 不带进位循环左移,不带进位循环右移,CF不参与循环

请添加图片描述
在这里插入图片描述

标志指令

CLC		; CF = 0
CMC		; CF 取反
CLD		; DF = 0
STD		; DF = 1
CLI		; IF = 0
STI		; IF = 1

转移指令

; 根据标志位 C、Z、S、P、O 转移

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

调用指令

call

; 无条件跳转子程序
call 过程名

RET		; call的下一条指令

proc

过程名		proc  属性
				子程序
				RET
过程名		ENDP

; 属性 NEAR、FAR
; NEAR 缺省,同一代码段
; FAR,不在同一代码段

RET N(偶数)

; NEAR 栈顶弹出2个字节 IP
; FAR  栈顶弹出4个字节 IP CS

RET N
; 表示弹出 IP和CS以后,堆栈指针再向下移动 N个字节

串操作指令

串传送

REP MOVSB	; ES:DI <- DS:SI
REP MOVSW
REP MOVSD
; 根据 CX 重复执行
; CLD 将 DF标志置 0,正序

串装入

LODSB		; AL <- DS:SI
LODSW
LODSD 

串存储

STOSB		; ES:DI <- AL
STOSW
STOSD
; 重复前缀 REP

串比较

CMPSB		; ES:DI - DS:SI
CMPSW
CMPSD
; 改变 ZF标志
; REPE  相等继续重复
; REPNE 不相等继续重复

串搜索

SCASB		; AL - ES:DI
SCASW
SCASD
; 也就是用减法找是否存在字符,改变 ZF标志
; REPE  相等继续重复
; REPNE 不相等继续重复

汇编语言结构

在这里插入图片描述

方式定义

.586		; CPU类型的机器指令
; 默认 .8086

段定义

; 段名	SEGMENT [定位参数、链接参数、分类名]	段长度
DATA SEGMENT USE16

DATA ENDS
; USE16,逻辑段16位寻址方式
; USE32,逻辑段32位寻址方式
; 单一模块程序,堆栈段分类名应为 STACK,且不可省略,其他逻辑段可以缺省3个属性

段约定

ASSUME CS:CODE,DS:DATA,SS:STACK
; 习惯代码段第一句,约定不执行

END结束

END BEG		; 作为源程序的结束最后一句,同时也指明了CPU开始执行的入口

返回DOS

MOV AH,4CH		
INT 21H

DOS 调用模式

MOV AH, 功能号		; 设置入口参数
INT	21H					; 分析出口参数
; 20H、27H程序退出,21H系统功能调用,25H、26H磁盘RW中断
; 22H、23H、24H 专用中断,用户不能使用

功能号:

  • 01H:等待键入一个字符,有回显,AL=按键的ASCII,响应CTRL+C
  • 02H:显示一个字符,DL=要显示的字符ASCII,响应CTRL+C
  • 07H:等待键入一个字符,无回显,AL=按键的ASCII,不响应CTRL+C
  • 08H:等待键入一个字符,无回显,AL=按键的ASCII,响应CTRL+C
  • 09H:显示字符串,DS:DX=字符串地址,必须$结尾,响应CTRL+C
  • 0AH:等待键入字符串写入缓冲区,DS:DX=存放字符串的缓冲区,第一个字节缓冲区容量,第二个字节实际长度,第三个字节开始填充ASCII,最后一个字节ODH回车

宏指令

  • 不同于子程序,子程序可以先调用后定义,宏要先定义后调用,习惯放在程序首部
  • 子程序由CPU完成,宏由编译过程完成,也就是将宏代码复制到调用的位置
宏名	MACRO	[形参表]
		 。。。。。; 宏体
		 ENDM
		 
LOCAL	标号名
; 放在宏定义 MACRO下一句,定义局部标号,可以与源程序的标号、变量重名

引脚功能

总线

数据总线、地址总线、控制总线

在这里插入图片描述

INTR、NMI

  • INTR 可屏蔽中断请求信号
  • NMI 非屏蔽中断请求信号

HOLD、HLDA

  • HOLD 总线保持请求信号(输入)
  • HLDA 总线保持响应信号(输出)

最小模式

系统只有一个8086/8088处理器,直接产生所有的总线控制信号,总线控制电路减到最少

最大模式

相对最小模式,有多个微处理器

主处理器8086/8088,其他的叫协处理器

总线三态

逻辑1、逻辑0、浮空三种状态

浮空态总线电路极高输出阻抗

三态保证任何时刻只能相互交换信息的设备占用总线,和数据的快速传送DMA提供必要条件

总线分时复用

因为外部引脚数量的限制,采用总线分时复用

8086总线低16位分时复用,8088只能传输8位数据,只有8个地址引脚兼数据引脚

总线时序

  • 总线周期:CPU通过系统总线对外部存储器或IO接口一次访问要的时间
  • 时钟周期:CPU的基本时间计量单位,一个基本周期由4个时钟周期组成,T1、T2、T3、T4,当存储器和外设速度较慢时,T3后面会插入多个等待状态Tw

复位状态

复位信号线RESET高电平,CPU结束现行操作

CS置FFFFH,其余片内寄存器清零

8086和8088CPU的区别

1、8086 为M/^IO引脚,8088 为 IO/^M,也就是电平相反
2、8086 16个地址数据复用引脚 AD0~AD15,8088 8个地址数据复用引脚 AD0~AD7
3、8088 没有^BHE/S7,而是^SS0

读写较慢,CPU申请等待时钟

存储器或IO设备读写较慢时,在没有完成读写时应输出一个低电平信号,完成时输出高电平信号。
该信号经8284时钟电路同步后,加入到CPU的READY端,当检测到信号为低时在T3、T4间插入等待Tw,直到READY为高电平进入T4周期

中断异常

  • 中断:外部事件而改变执行的流程,转去处理外部事件
  • 异常:内部意外而改变执行的流程,报告出错情况状态

中断外部引发,异步执行

异常因指令不能成功执行,报告出错状态,同步执行

8086中断

  • 可屏蔽中断:INTR(高电平),受 IF标志影响,IF=1 允许中断,IF=0 禁止中断
  • 非屏蔽中断:NMI(上升沿),不受 IF标志影响,通常处理应急事件、电源故障

8086异常

  • 故障:可被恢复执行的异常,指令执行之前报告状态,排除故障后,IRET返回到故障指令并执行
  • 陷阱:异常指令执行之后报告状态,IRET返回到陷阱指令的下一条,受 TF影响单步中断
  • 中止:严重错误产生的异常,中止程序不可恢复

优先级

  • 中断优先级:多个中断源请求中断,若A和B不会被中断请求打断,那就是同优先级中断,若暂停A中断转去执行B中断,那就是中断嵌套
  • 中断优先次序:优先级相同的中断源同时请求中断,谁能最先得到响应

中断响应过程

  • 标志寄存器FLAGS压栈
  • 清除标志TF、IF
  • CS内容压入堆栈
  • IP内容压入堆栈
  • 取出相应中断矢量给IP和CS,转到执行中断程序

中断服务程序4个部分:保护现场、中断服务、恢复现场、中断返回

中断控制器8259A

单片8259A可以管理8个中断源,多片级联管理,1个主片 8个从片可以管理64个中断源

主要依赖内部寄存器 IRR、IMR、ISR

在这里插入图片描述

8259A工作方式

1、设置优先级

  • 正常完全嵌套:最常用,按优先级处理,IR0级别最高,不响应同级或低级中断,响应高级中断
  • 特殊完全嵌套:响应同级中断,特殊嵌套
  • 优先级自动循环:多个中断源优先级相同时,一个被响应后优先级降到最低,相邻的中断变成最高,循环
  • 优先级特殊循环:通过程序设定中断源优先级最低

2、屏蔽中断源

  • 普通屏蔽:设置 IMR某位 1或0来 屏蔽或允许
  • 特殊屏蔽:动态改变系统优先级结构

3、中断结束处理

  • 中断自动结束:当第二个中断响应脉冲^INTA送到 8259A后,会自动清除中断服务寄存器 ISR中的对应位
  • 中断结束命令:普通EOI、特殊EOI
    • 普通EOI:自动把 ISR中优先级最高的非零 IS复位,适用全嵌套,即结束当前正在服务的中断
    • 特殊EOI:指出要清除 ISR哪一位复位,适用任何优先级

4、总线连接方式

  • 缓冲方式:通过总线驱动器和数据总线相连
  • 非缓冲方式:总线负载允许,直接挂在数据总线上

5、中断触发方式

  • 边沿触发:IR 上升沿中断信号

  • 电平触发:IR 高电平中断信号

在这里插入图片描述

中断程序与CALL程序区别

  • CALL是同步,中断是异步

  • CALL只需压入下一条指令的断点地址,中断需要压入标志寄存器FLAGS、断点地址,外部硬件获取中断类型码计算中断矢量地址,从中断矢量表中获取中断矢量给 CS:IP

  • CALL 返回指令 RET,中断返回指令 IRET

  • CALL可以远程调用也可以近程,中断一定是远程调用

  • 传参方式不同,中断一般不能采用寄存器或堆栈传参,因为无法在转入中断服务前设置入口参数

8259A中断结束方式

在中断服务结束返回之前,一定要安排发中断结束命令

目的清除 ISR中相应位,告示结束本次中断。如果不清除仍为1,表示请求已响应且未结束。

优先级同级或低级中断请求将一直挂起

中断处理过程、中断处理程序

  • 中断处理过程:申请中断、响应中断、处理中断、中断返回
  • 中断处理程序:保护现场、中断服务、恢复现场

8259A初始化命令字

初始化命令字:初始化阶段发送给8259A,用来规定基本操作的命令字

  • ICW1:设置中断请求信号(脉冲或电平)、工作方式(单片或级联)、是否需要初始化命令字 ICW4
  • ICW2:设置中断类型号基值
  • ICW3:仅用于级联,指明主片哪一个中断源(IR0~IR7)与从片的 LNT引脚相连
  • ICW4:设置嵌套方式(正常或特殊)、 缓冲方式、结束方式(正常或自动)

8259A操作命令字

操作命令字:用于控制8259A操作的命令字

  • OCW1:设置中断源屏蔽状态
  • OCW2:控制中断结束方式、修改优先权管理方式
  • OCW3:管理特殊的屏蔽方式和查询方式

debug

-a 汇编命令

-a [段寄存器|段地址]:[段内偏移]

; 显示段地址和段内偏移并等待用户从键盘逐条键入汇编命令
; 逐条汇编成代码指令,顺序存放到段地址和段内偏移所指定的内存区域

-d 显示内存

-d [地址] [范围]

; 显示指定范围内存的内容

-e 修改内存

-e [地址] [内容表]

; 可连续修改内存,将内容表逐一写入地址开始的单元

-f 填充内存

-f [起始] [长度|地址] [内容表]

; 将内容表中的值逐个重复填入指定范围

-G 执行命令

-G=[地址],[断点]

; 执行内存中指定序列
; 从 cs:ip 开始执行
; 从指定地址开始执行,到断点停止

-h 16进制计算

-h b3 12

; 返回 16进制数的和与差

-i 端口输入

-i [端口地址]

; 从指定端口接收信息并将输入的内容显示出来

-o 端口输出

-o [端口地址] [字节]

; 将字节从指定的端口输出

-L 读盘命令

-N demo
-L [地址] [驱动器号] [起始逻辑扇区] [所读扇区个数]

; 将<驱动器号>指定的盘上,从<起始逻辑扇区>起共n个逻辑扇区上的所有宇节顺序读入指定内存地址开始的一片连续单元。
; 当L后的参数缺省时,必须在L之前由N命令指定(或进入DEBUG时一并指出)所读驱动器文件名。此时L执行后将该文件装入内存

-W 写盘命令

-W [地址] [盘号] [起始逻辑扇区] [所写扇区个数]

; 与L命令不同的地方是将内存从<地址>起始的一片单元内容写入指定扇区。
; 只有 W而没有参数时,与N命令配合使用将文件写盘

-M 内存搬家

-M [源地址] [范围] [目标地址]

; 把<源地址范围>中的内容顺序搬至<目标起始地址>起的一片连续单元。
; 其中源及目标地址若仅输入偏移量,则隐含相对DS

-N 写文件命令

-N [文件说明]

; 为L|W 命令指定待装入|写盘文件

-r 显示修改寄存器

-r [寄存器]

; 显示当前所有寄存器内容,状态标志及将要执行的下一指令的地址,代码及汇编语句形式。
; 其中对状态标志FLAG以每位的形式显示
标志位溢出 of方向 df中断 if符号 sf零 zf辅助 af奇偶 pf进位 cf
状态有无减增开关负正零非有无偶奇有无
显示OV| NVDN| UPEI| DING| PLZR| NZAC| NAPE| POCY| NC

-s 搜索内存

-s [地址范围] [表]

; 范围中找表中内容,找到后返回表中元素相应地址

-t 执行并显示环境

-t [=地址], [条数]

; 执行由指定地址起始的、由<条数>指定的若条命令。
; <地址>的缺省值是当前的 ip
; <条数>的缺省值是 1条

-u 反汇编

-u [地址|范围]

; 将指定范围内的代码以汇编语句形式显示,同时显示地址及代码
; 地址及范围的缺省值是上次 U指令后下一地址的值。这样可以连续反汇编

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/30268.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Solidity vs. Vyper:不同的智能合约语言的优缺点

本文探讨以下问题&#xff1a;哪种智能合约语言更有优势&#xff0c;Solidity 还是 Vyper&#xff1f;最近&#xff0c;关于哪种是“最好的”智能合约语言存在很多争论&#xff0c;当然了&#xff0c;每一种语言都有它的支持者。 这篇文章是为了回答这场辩论最根本的问题&…

磨金石教育摄影技能干货分享|中国风摄影大师——郎静山

说到中国风摄影&#xff0c;你想到的画面是什么样子的&#xff1f;故宫、长城、苏州园林、大红灯笼高高挂&#xff0c;反正离不开传承了千八百年的古建筑。仿佛没有了这些历史古董的元素就没有中国味道似的。 其实中国风&#xff0c;其内核应该是传统的审美观念和哲学思想。中…

【雷丰阳-谷粒商城 】课程概述

持续学习&持续更新中… 学习态度&#xff1a;守破离 【雷丰阳-谷粒商城 】课程概述该电商项目与其它项目的区别项目简介项目背景电商模式谷粒商城项目技术&特色项目前置要求谷粒商城-微服务架构图谷粒商城-微服务划分图参考该电商项目与其它项目的区别 互联网大型项目…

深入linux内核架构--内存管理

【推荐阅读】 代码大佬的【Linux内核开发笔记】分享&#xff0c;前人栽树后人乘凉&#xff01; 一文了解Linux内核的Oops 一篇长文叙述Linux内核虚拟地址空间的基本概括 路由选择协议——RIP协议 深入理解Intel CPU体系结构【值得收藏&#xff01;】 内存体系结构 1. UM…

银行测试人员谈测试需求

今天呢&#xff0c;想用故事说话&#xff0c;先看看啥叫用户需求挖掘。其实看完故事之后&#xff0c;我自己颇为震撼&#xff0c;请看。 故事一&#xff1a; 100多年前&#xff0c;福特公司的创始人亨利福特先生到处跑去问客户&#xff1a;“您需要一个什么样的更好的交通工具…

loganalyzer 展示数据库中的日志

1 实验目标&#xff1a; 利用rsyslog日志服务&#xff0c;将收集的日志记录于MySQL中&#xff0c;通过loganalyzer 展示数据库中的日志 2 环境准备 三台主机&#xff1a; 一台日志服务器&#xff0c;利用上一个案例实现&#xff0c;IP&#xff1a;192.168.100.100一台数据库…

【Java八股文总结】之数据结构

文章目录数据结构一、概念1、时间复杂度与空间复杂度2、常见算法时间复杂度3、Comparable二、常见的排序算法1、直接插入排序2、希尔排序3、选择排序4、堆排序5、冒泡排序6、快速排序7、归并排序8、二分查找算法Q&#xff1a;什么时候需要结束呢&#xff1f;三、线性表1、概念2…

使用 Footprint Analytics, 快速搭建区块链数据应用

Nov 2022, danielfootprint.network 如果你有一个处理 NFTs 或区块链的网站或应用程序&#xff0c;你可以在你的平台上直接向用户展示数据&#xff0c;以保持他们在网站或者应用内的参与&#xff0c;而不是链接以及跳出到其他网站。 对于任何区块链应用或者媒体、信息网站来说…

秦皇岛科学选育新品种 国稻种芯·中国水稻节:河北秸秆变肥料

秦皇岛科学选育新品种 国稻种芯中国水稻节&#xff1a;河北秸秆变肥料 秦皇岛新闻网 记者李妍 冀时客户端报道&#xff08;河北台 张志刚 米弘钊 赵永鑫 通讯员 赵力楠&#xff09; 新闻中国采编网 中国新闻采编网 谋定研究中国智库网 中国农民丰收节国际贸易促进会 国稻种芯…

无线通信技术概览

电生磁&#xff0c;磁生电 电场和磁场的关系&#xff0c;简而言之就是&#xff1a;变化的电场产生磁场&#xff0c;变化的磁场产生电场。 电荷的定向移动产生电流&#xff0c;电荷本身产生电场。电流是移动的电场。静止的电荷产生静止的电场&#xff0c;运动的电荷产生运动的电…

java实现阿里云rocketMQ消息的发送与消费(http协议sdk)

目录一、准备工作二、代码实现1.添加依赖2.创建一个常量类存放公共参数3.调用HTTP协议的SDK 发送普通消息4.调用HTTP协议的SDK 订阅普通消息三、配置main的日志输出级别四、测试效果五、完成代码一、准备工作 登录阿里云官网&#xff0c;先申请rocketMQ&#xff0c;再申请Topi…

一文带你了解PCB设计中的常用基本概念

本文将从初学者的角度出发&#xff0c;一文带你快速了解PCB设计中的常用基本概念&#xff1a;一、FR4板材FR-4就是玻璃纤维环氧树脂覆铜板&#xff0c;线路板中的一种基材&#xff0c;可以分为一般FR4板材和高TG FR4板材&#xff0c;Tg是玻璃转化温度&#xff0c;即熔点。电路板…

分享好玩的h5小游戏制作_为什么要做h5微信小游戏呢

近年来&#xff0c;市面上一直流行各种h5游戏&#xff0c;例如投票、答题、刮刮乐、大转盘等等等等&#xff0c;而且我在各种营销场景下经常看到它们的身影&#xff0c;是做促销&#xff0c;引流和宣传的神器之一&#xff01; 那么&#xff0c;怎么做好玩的h5游戏&#xff1f;还…

DIXml v5.21.0 for Delphi 11

DIXml v5.21.0 for Delphi 11 DIXml是一个嵌入式XML、XSLT&#xff0c;也是Delphi的EXSLT处理库(Embarcadero//CodeGear/Borland)。它构建在libxml2、libxslt和libexslt库上&#xff0c;但不需要更多的DLL或其他外部文件。 DIXml很容易成为Delphi中功能最齐全的XML和XSLT替代品…

实战讲解MyBatis缓存:一级缓存和二级缓存(图+文+源码)

1 缘起 回顾SpringBoot如何进行事务管理相关知识的时&#xff0c; 发现使用Spring的注解Transational即可实现事务管理&#xff0c;完成回滚操作&#xff0c; 然而SpringBoot中使用MyBatis这个ORM框架操作数据库&#xff0c;实现CURD&#xff0c; 这两者有什么关系呢&#xff…

集合类不安全

ArryList集合 多线程下不安全&#xff1b;可能会报错&#xff1a;java.util.ConcurrentModificationException&#xff08;并发修改异常&#xff09; import java.util.*; import java.util.concurrent.CopyOnWriteArrayList;//java.util.ConcurrentModificationException 并发…

每日刷题3——牛客,算术转换和二级指针

更新不易&#xff0c;麻烦多多点赞&#xff0c;欢迎你的提问&#xff0c;感谢你的转发&#xff0c; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我…

FFmpeg入门 - 视频播放

音视频最好从能够直接看到东西,也更加贴近用户的播放开始学起. 音视频编解码基础 我们可以通过http、rtmp或者本地的视频文件去播放视频。这里的"视频"实际上指的是mp4、avi这种既有音频也有视频的文件格式。 这样的视频文件可能会有多条轨道例如视频轨道、音频轨道…

(200,10)和(10,)的ndarray数组怎么计算内积,得到的是什么维度?

今天在定义一个内积运算的时候&#xff0c;发现了一个模糊的问题&#xff0c;两个变量&#xff0c;都是ndarray数组&#xff0c;一个维度是(200,10)&#xff0c;一个维度是(10,)&#xff0c;两者求内积后得到的新数组的维度是(200,)&#xff0c;该如何理解&#xff1f; 一、数…

你给我解释解释,什么TMD叫TMD attention(持续更新ing...)

诸神缄默不语-个人CSDN博文目录 开宗明义&#xff1a;attention就是一个加权机制&#xff0c;但是权重需要经过训练得到。 本文介绍一些我自己整理的常见attention类型。 本文不关注别的博文里已经写烂了的attention机制的重要性和直觉解释&#xff08;又不是写论文还要写int…