电脑硬件

电脑硬件,第1张

寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1可将寄存器内的数据执行算术及逻辑运算。2存于寄存器内的地址可用来指向内存的某个位置,即寻址。3可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器 CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。 所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于 ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志(

OF: 溢出标志位OF用于反映有符号数加减运算所得结果是否溢出。如果运算结果超过当前运算位数所能表示的范围,则称为溢出,OF的值被置为1,否则,OF的值被清为0

DF: 方向标志DF位用来决定在串 *** 作指令执行时有关指针寄存器发生调整的方向。

IF: 中断允许标志IF位用来决定CPU是否响应CPU外部的可屏蔽中断发出的中断请求。但不管该标志为何值,CPU都必须响应CPU外部的不可屏蔽中断所发出的中断请求,以及CPU内部产生的中断请求。具体规定如下:

(1)、当IF=1时,CPU可以响应CPU外部的可屏蔽中断发出的中断请求;

(2)、当IF=0时,CPU不响应CPU外部的可屏蔽中断发出的中断请求。

TF: 状态控制标志位是用来控制CPU *** 作的,它们要通过专门的指令才能使之发生改变

SF: 符号标志SF用来反映运算结果的符号位,它与运算结果的最高位相同。在微机系统中,有符号数采用补码表示法,所以,SF也就反映运算结果的正负号。运算结果为正数时,SF的值为0,否则其值为1。

ZF: 零标志ZF用来反映运算结果是否为0。如果运算结果为0,则其值为1,否则其值为0。在判断运算结果是否为0时,可使用此标志位。

AF: 下列情况下,辅助进位标志AF的值被置为1,否则其值为0:

(1)、在字 *** 作时,发生低字节向高字节进位或借位时;

(2)、在字节 *** 作时,发生低4位向高4位进位或借位时。

PF: 奇偶标志PF用于反映运算结果中“1”的个数的奇偶性。如果“1”的个数为偶数,则PF的值为1,否则其值为0。

CF: 进位标志CF主要用来反映运算是否产生进位或借位。如果运算结果的最高位产生了一个进位或借位,那么,其值为1,否则其值为0。)

data segment

credit dw 76,69,84,90,73,88,99,63,100,80

mes1 db '60-69:$'

mes2 db '70-79:$'

mes3 db '80-89:$'

mes4 db '90-99:$'

mes5 db '100:$'

s6 db ;60-69段人数计数器

s7 db ;70-79段人数计数器

s8 db ;80-89段人数计数器

s9 db ;90-99段人数计数器

s10 db ;100段人数计数器

data ends

code segment

assume cs:code,ds:data

main proc far

start:

mov ax,data

mov ds,ax

call count ;统计各分段人数的子程序

mov ah,4ch

int 21h

ret

main endp

count proc near

lea si,credit

mov cx,0ah

m1:mov bx,[si]

add si,2

cmp bx,60

jl m6

cmp bx,69

jg m2

inc s6

jmp m6 ;60-69

m2:cmp bx,79

jg m3 ;70-79

inc s7

jmp m6

m3:cmp bx,89

jg m4 ;80-89

inc s8

jmp m6

m4:cmp bx,99

jg m5 ;90-99

inc s9

jmp m6

m5:cmp bx,100

jg m6 ;100

inc s10

m6:loop m1

mov dx,offset mes1

mov ah,09h

int 21h

mov dl,s6

add dl,30h

mov ah,02h

int 21h

call crlf

mov dx,offset mes2

mov ah,09h

int 21h

mov dl,s7

add dl,30h

mov ah,02h

int 21h

call crlf

mov dx,offset mes3

mov ah,09h

int 21h

mov dl,s8

add dl,30h

mov ah,02h

int 21h

call crlf

mov dx,offset mes4

mov ah,09h

int 21h

mov dl,s9

add dl,30h

mov ah,02h

int 21h

call crlf

mov dx,offset mes5

mov ah,09h

int 21h

mov dl,s10

add dl,30h

mov ah,02h

int 21h

exit:

ret

count endp

crlf proc near ;回车换行子程序

mov dl,0ah

mov ah,02h

int 21h

mov dl,0dh

mov ah,02h

int 21h

ret

crlf endp

code ends

end start

入门级《汇编语言》,推荐清华大学出版社王爽的《汇编语言》,很简单,很好入门。书中内容的编排有一定连贯性,要用到哪部分知识就介绍哪部分知识。其它书籍不适合入门的原因是一开始就将所有的寄存器、寻址方式列举出来,记忆已经相当困难,何况是活用?所以还没有体会到编程的快乐,就被推进了无尽的苦难中!

如果需要学到一定的深度,清华大学出版社的《80x86汇编语言程序设计》(作者不详)《IBM-PC 汇编语言》是比较好的教材(沈美明,温冬婵著)。这些教材我全部都读过,基本上是按照由浅入深的顺序。

需要说明的是,汇编语言在当前高级语言的发展环境下,用途范围越来越狭窄,因为面向对象编程思想逐步取代过程语言设计,可以说汇编语言仅在电子产品的底层能够发挥其长处。但是可以借助汇编语言了解计算机的工作原理,为高级语言打下坚实的基础

以上就是关于电脑硬件全部的内容,包括:电脑硬件、IBM 汇编语言 习题、要学汇编,哪本书比较好等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9498734.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-29
下一篇2023-04-29

发表评论

登录后才能评论

评论列表(0条)

    保存