SP为什么是00FAH啊?除了汇编 标志寄存器器里的2个字节入堆栈,还有其他吗

《汇编语言程序设计》试卷 模拟试卷一 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1.用户为了解决自己的问题,用汇编语言所编写的程序,称为
) A)目标程序
C)可执行程序
D)汇编程序 2.指令指针寄存器是
D)PSW 3.当堆栈为空时,如SS=0805H,SP=40H,栈底字单元的物理地址是
) A)08090H
D)08450H 4.下面指令中,源操作数的寻址方式为立即寻址的是
AX,OFFSET A
AX,A+1 A)MOV [DI],[SI]
AX,A[BX] 5.下面各传送指令中,正确的是(
[DX+DI],AL C)MOV AL,BX
WORD PTR [BX],0100H 6.已知CS=2300H,DS=2400H,执行下列指令序列后,CS和DS值是
DS A)CS=0
B)CS=2400H
C)CS=2400H
D)CS=2300H DS=2300H
DS=2300H 7.执行下面指令语句,则AX=
AL,95H CBW A)0095H
D)9095H 8.当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是
A)表示结果中含1的个数为偶数
B)表示结果中含1的个数为奇数
C)表示该数为偶数
D)表示结果中低八位含1的个数为偶数 9.设AX=1000H NEG AX NOT AX 执行上述指令后,正确的结果是(
) A)AX=1001H
B)AX=0FFFH
C)AX=1000H
D)AX=0111H 10.完成将累加器AL清零,并使进位标志CF清零,下面错误的指令是
) A)MOV AL,00H
B)AND AL,00H
C)XOR AL,AL
D)SUB AL,AL 11.将CX寄存器低4位清零的正确指令是
CX,0FFF0H C)AND
CX,0 12.执行后使BX=0的同时也使CF=0,OF=0的指令是
) A)XOR BX,BX
B)OR BX,BX C)AND BX,BX
D)CMP BX,BX 13.在串操作指令前使用重复前缀指令REPE,终止串的重复操作条件是
A)CX=0且ZF=0
B)CX=0且ZF=1
C)CX=0或ZF=0
D)CX=0或ZF=1 14.条件转移指令JBE产生转移的条件是(
) A)CF=0 OR ZF=0
B)CF=0 OR ZF=1 C)CF=1 OR ZF=0
D)CF=1 OR ZF=1 15.比较BX和SI中的两个存储器地址,若BX≥SI转向HIGH的正确指令是
) A)JAE HIGH A)DX中
B)JBE HIGH
C)JEG HIGH
D)JLE HIGH D)CL中 D)四字 16.循环指令Loop规定循环次数必定在寄存器
PTR[BX]指令中的操作数的数据类型是
) 18.下面指令执行后,变量DAB中的内容是
DAW DW 2A05H
DAB DB 0FAH
MOV AL,BYTE PRT DAW
SUB DAB,AL
D)0D0H 19. 使用汇编语言的伪操作命令定义
VAL DB 2 DUP(1,2,3 DUP(3),2 DUP(1,0))
则在VAL存储区内前十个字节单元的数据是
A)1,2,3,3,2,1,0,1,2,3
B)1,2,3,3,3,3,2,1,0,1
C)2,1,2,3,3,2,1,0,2,1
D)1,2,3,3,3,1,0,1,0,1 20.设NUM=60H,表达式 (NUM LT 60H AND 30)OR(NUM GE 60H AND 40)的值是
二、填空题(本大题共5小题,每空1分,共20分) 1.INTEL 8088 管理的存储器空间最大容量为______________,I/O端口地址空间最大容量为_____________。 2.在汇编语言中,有五条串操作指令,其中搜索字符串指令的助记符是______。 3.存储器分四个段,这四个段的段名所对应的段寄存器分别是________、________、________、________。 4.现有(AX)=2000H,(BX)=1200H,(DS)=3000H,(DI)=0002H,(31200H)=50H,(31201H)=02H,(31202H)=40H,(CF)=0。请写出下列各条指令独立执行完后有关寄存器及存储单元的内容,并指出标志位ZF、CF的值。
AX,1200H;
问AX=________H
ZF=________
问AX=________H
ZF=________
AX,[BX];
问AX=________H
CF=________
PTR[1200H];
问(31200H)=________H
CF=________ 5.设(DS)=2200H,(BX)=1000H,(SI)=0100H,偏移量D=0A2B1H,试计算出下列各种寻址方式下的有效地址,填入横线上。
①使用D的直接寻址
②使用BX的寄存器间接寻址
③使用BX和D的寄存器相对寻址
④使用BX、SI和D的相对基址变址寻址
⑤使用BX、SI的基址变址寻址
三、简答题(8分) 设当前(SP)=0100H,(SS)=0300H,(PSW)=0240H,在内存段地址为0900H及偏移地址为00A0H的单元中有一条中断指令INT 11H(该指令占两个字节),试问执行这条INT 11H指令后,SP、CS、IP、PSW的内容是什么?栈顶的三个字是什么(画出堆栈示意图)? PC机内存中的一段数据如下:
B3 18 8A CC 4D F8 00 F0--41 F8 00 F0 C5 18 8A CC
39 E7 00 F0 A0 19 8A CC--2E E8 00 F0 D2 EF 00 F0 8086 CPU中PSW内容如下: 15
四、程序分析题(本大题共3小题,共20分) 1.阅读下面的程序段(6分)
AL,39H JBE
AL,7 NEXT:SUB
AL,30H MOV
NUM,AL 上述程序段运行后, (1)若输入’F’,则(NUM)=_____ (用二进制表示) (2)若输入’8’,则(NUM)=_____
(用二进制表示) (3)该程序段的功能是_____。 2. 阅读下面的程序段
DX,1 AG:TEST
BX NEXT:SHL
AG 请回答:(1)该程序段的功能是什么? 14
11 OF 10 DF 9 IF 8 TF 7 SF 6 ZF 5
(2)若程序执行前 (AX)=1234H,程序执行完后 (BX)=
-1,2,-3,4,-5,6,-7,8,-9 BUF2
┇ XOR BL,BL MOV SI,0 MOV CX,9 3.阅读下面的程序段
(8分) LOP:MOV AL,BUF1[SI] TEST AL,80H JZ
AL K:XOR AL,01H MOV
BUF2[SI],AL INC
?? (1)写出程序运行后BUF2中的各字节数据 (2)BL=______________
五、程序填空题(本大题共2小题,每小题6分,共12分) 1.下面程序段是判断两个存储单元是否同为正数,如是,则AX置全0,否则AX置非0。试在空白处各填上适当的一条条件转移指令(两空白处要利用不同的标志位选用不同的条件转移指令)。 VAR1 DW ×××× VAR2 DW ×××× ┇ MOV AX,VAR1 MOV BX,VAR2 XOR AX,BX
TEST BX,8000H
MOV AX,0 NEXT:?? 2.已知数据段DAT单元存放某一数N(-6QNQ6)下面的程序段用查表法求数N的平方值,结果送SQR单元,请将程序填写完整。 TABLE
0, 1, 4, 9, 16, 25 DAT
HLT NEXT:XLAT
六、编制程序题(本大题共2小题,共20分) 1.在N1和N2两数据区中,分别有10H个带符号数。试编制一源程序,找出对应项中较小的数据,并将这些较小的数据存入N3数据区中。
DATA SEGMENT
DB ××,××,××??
DB ××,××,××??
10H DUP(0)
2.编程序计算SUM=∑ai=a1+a2+...+a20,已知a1......a20依次存放在以BUF为首址的数据区,每个数据占两个字节,和数SUM也为两个字节。(要求用循环结构编写,循环控制采用计数控制)。
DATA SEGMENT
××,××,××,??
模拟试卷二 一、单项选择题(本大题共20小题,每小题1分,共20分) 在每小题列出的四个选项中只有一个选项是符合题目要求的,请将正确选项前的字母填在题后的括号内。 1.将汇编语言的程序翻译成机器码程序的实用程序是
A)编译程序
B)汇编程序
C)解释程序
D)目标程序
D)AF,OF,SF D)64K个字节 2.标志寄存器中属于控制标志位的是
) A)DF,OF,SF
B)DF,IF,TF
C)OF,CF,PF 3.存储器分段,每个段不超过(
) A)64K个字
B)32K个字节
C)1M个字节
4.已知DS=12A0H,ES=22A0H,SS=33A0H,BP=0174H,指令“MOV AX,DS:[BP]”中源操作数的物理地址是
) A)12A074H
D)12B74H 5.下面的数据传送指令中,错误的操作是
A)MOV SS:[BX+DI],1000H
B)MOV DX,1000H
C)MOV WORD PTR[BX],1000H
D)MOV DS,2000H 6.已知SP=2110H,执行POP
AX后,SP寄存器的值是
) A)2111H
D)210EH 7.执行下面指令语句,则AX=
AL,85H CBW A)0085H扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
《微机原理》的习题求解在某系统中,已知当前(SS)=2360H,(SP)=0800H,请说明该堆栈段在存储器中的物理地址范围.若往堆栈中存有20个字节数据,那么SP的内容为什么值?
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
只能知道当前堆栈段的物理地址,ss*16+sp=23E00H,sp=0时为栈底,物理地址为23600H堆栈段最大不超过64k,该堆栈段的段地址为2360H,偏移地址范围最大为0000H~0FFFFH物理地址=段地址*10H+偏移地址 ,即2FFH.当前sp=0800,若再向堆栈中压入20个字节的数据,此时sp的内容为4H
为您推荐:
其他类似问题
扫描下载二维码请问在计算机CPU中有个标志位寄存器,也就是Flag,请问这个寄存器的具体作用是什么啊?_百度知道
请问在计算机CPU中有个标志位寄存器,也就是Flag,请问这个寄存器的具体作用是什么啊?
我有更好的答案
CPU在执行完一条指令之后,对于会影响标志位的指令,会根据指令执行后的结果(如ADD,SHL)或者直接(如STC,CLI)设置对应的标志位而有些指令,则会因为标志位不通而执行不通的操作(如ADC,RCL)所以说,标志位是不同指令间进行信息传递的桥梁
----WDSYMH
采纳率:48%
保护模式和实模式并没有太大的区别,二者都使用了内存段、中断和设备驱动来处理硬件。 什么是保护模式自从1969年推出第一个微处理器以来,Intel处理器就在不断地更新换代,从。现在,这个操作系统已经越来越接近当年Linus Torvalds的那个具有“历史意义”的Linux内核了。因此,段长是可变的,其最大可达4GB,其中存放的是局部的。物理地址由16位或者32位的偏移加上影像寄存器中的基址组成; 隐藏扇区号print_mesg ,其中包含所有应用程序都可以使用的基本描述符。内存段的处理是通过和段寄存器相关联的内部机制来处理的,这些段寄存器(CS、DS,而在保护模式中。每一个描述符的长度是8个字节,格式如图3所示。当段寄存器被加载的时候,段基地址就会从相应的表入口获得。描述符的内容会被存储在一个程序员不可见的影像寄存器(shadow register)之中、SS和ES)的内容形成了物理地址的一部分。具体来说; 读写扇区号dw 0 ,还有一个中断描述符表(IDT)、多任务及使用640KB以上的内存等,保护模式是处理器的一种最自然的模式。在保护模式下,段是通过一系列被称之为“描述符表”的表所定义的。段寄存器存储的是指向这些表的指针,要马上把这个系统切换到保护模式之下。在这种模式下,处理器的所有指令及体系结构的所有特色都是可用的,并且能够达到最高的性能。 保护模式和实模式从表面上看;dw 512 ,段长是固定的(为64KB).&quot。LDT也是段描述符的一个数组。与GDT不同。CR0包含系统的控制标志,用于控制处理器的操作模式和状态。CR2和CR3是用于控制分页机制的。在此; 起始地址是 jmp short begin_boot ,名字分别为CR0、CR1、CR2和CR3。CR1是保留在未来处理器中使用的,还要执行跳转指令。过程简述如下,每一个中断都有一个入口。 进入保护模式8位控制寄存器; 每一扇区的字节数db 1 ; 每一簇的扇区数dw 1 ; 保留的扇区号db 2dw 0x00e0 dw 0x0b40 db 0x0f0 dw 9 dw 18 dw 2 ,保护模式为程序员提供了更好的保护,提供了更多的内存。 图1 实模式的寻址图2 保护模式下的寻址图3 段描述俯的格式此外、不需要全局共享的段描述符。每一个操作系统都必须定义一个GDT,而每一个正在运行的任务都会有一个相应的LDT。在实模式中。实模式和保护模式的不同可以从图1和图2中很清楚地看出来。这些中断描述符会告诉处理器到那里可以找到中断处理程序。和实模式一样,80286以后引入了保护模式,而在80386以后保护模式又进行了很大的改进,以便下一次同一个段可以使用该信息而不用每次都到表中提取、80286,保护模式的目的不是为了保护程序。当PE=1时,说明处理器运行于保护模式之下,到8、奔腾..&pm_mesg db &quot..。如果PE=0,那么处理器就工作在实模式之下..;Switching to protected mode .,而是要保护程序以外的所有程序(包括操作系统)。 简言之,还要做一些其它的事情。程序必须要对系统的段寄存器和控制寄存器进行初始化,但是这些入口的格式却完全不同。因为在切换到保护模式的过程中没有使用到IDT: 1.创建GDT表; 2.通过置PE位为1进入保护模式,我们关注的是CR0寄存器的PE位控制,它负责实模式和保护模式之间的切换: 物理地址=左移4位的段地址+偏移地址、奔腾Ⅱ。用于定义内存段的表有两种:全局描述符表(GDT)和局部描述符表(LDT)。GDT是一个段描述符数组..:mov ah,0x13 ; 使用中断10h的功能13,在屏幕上写一个字符串mov al,在实模式中内存被划分成段,每个段的大小为64KB,而这样的段地址可以用16位来表示、奔腾4等,其体系结构也在不断变化。80386以后,提供了一些新的功能,弥补了8086的一些缺陷,2),我向大家讲述了如何使用Linux提供的开发工具在软盘的启动扇区写一些代码; 3.执行跳转以清除在实模式下读取的任何指令。 下面使用代码来实现这个切换过程,并仍然保持和8086家族的兼容性。也就是说80386仍然具备了的所有功能,但是在功能上有了很大的增强。早期的处理器是工作在实模式之下的; 跳过其它的数据,跳转到引导程序的开始处bootmesg db &quot,但二者有很多不同之处。我们知道,LDT是一个段。在80386中。事实上。 需要的东西◆ 一张空白软盘 ◆ NASM编译器 下面是整个程序的源代码: org 0x07c00;Our OS boot sector loading ,以及如何调用BIOS的问题,所以在此就不多做介绍了。 切换到保护模式,实际就是把PE位置为1。为了把系统切换到保护模式,在80386中没有定义,其采用的段机制和前面所述的相应内容对应。这其中包括内存保护,最终的物理地址是由16位的段地址和16位的段内偏移地址组成的。用公式表示为在上两期中(自己动手写操作系统1。把PE位置1后,0x00
标志位寄存器主要分这么两类:状态标志和控制标志。状态标志作用:它是操作在执行后,决定算数逻辑不见ALU处在何种状态,这种状态会影响后面的操作。控制标志:它是人为设置的,指令系统中有专门的指令用于控制标志的设置和清除,每个控制标志都对每一种特定的功能起控制作用。
标志寄存器 是反映的当前指令执行的状态
其他1条回答
为您推荐:
其他类似问题
寄存器的相关知识
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。工业微机 程序方面的问题!(有三道题) 请高手进拜托了各位 谢谢_百度知道
工业微机 程序方面的问题!(有三道题) 请高手进拜托了各位 谢谢
⑴中断向量表首地址=中断型号×4 那么 INT 12H 的首地址应该是00048H
INT 8H 的首地址应该是00020H 为什么要在&00048&前有"000& ? 还有INT 8H 为什么不等于&00032H&呢 ?
⑵ 给定(SP)=0100 ,(SS)=0300, (FLAGS)=0240,存储单元的内容为(0,(00022...
我有更好的答案
高位先进,然后SP需要减去4字节, 最后SP为FAH,计算方法就是(1)里的方式:00A0H 的下一地址(返回位置) 0900H(1) 数字后面加了H表示16进制, 数字前面的0是前导0, 以数字开头时可有可无, 具体有多少个前导0都可以, 但以字母(A~F)开头的十六进制时,对于INT8,其中断程序的入口地址在20H和21H, 当执行INT8时, 然后根据8号中断得到20H和21H处的地址0040H,即0040H 和0100H. 12H (十进制18) *4 = 48H (十进制72) 8H(十进制8)*4 = 20H(十进制的32) (2) 前题A: SP是堆栈寄存器, 堆栈是向下生长的(减法), SS是是源地址段寄存器:00A1H入栈保存。 前题B: INT8 是调用8号中断, 在DOS中8号是时钟中断, 发生中断时, 这里的第9位IF就是代表interrupt Flag发生中断的标志位,再取那个地址上的数据. 有了这些解释,你的答案就好找了,系统从栈顶分别弹出CS, 前面至少需要加一个前导0.ZF.SF.DF.OF。中断返回时, 然后把当前地址0900H.11分别为CF:IP的值分别压入堆栈,然后将中断服务程序的入口地址装入CS和IP寄存器, FLAGS是运行标志寄存器, IP是当前运行代码指针地址寄存器 前题B: FLAGS标志寄存器是16位特殊寄存器, 首先把原FLAGS 0240H入栈保存, SP需要减2两字节; 存储器间接寻址就是把存储器里面的内容当成地址,从而和变量区别开来. 于是,从而变成0040. 于是你的结果就出来的. (3) 你去搞懂几种寻址方式就可以了: 直接寻址就是拿一个数字(非寄存器)当成地址. 前题B: 当中断发生时,系统将标志寄存器flags,下一条指令的地址CS、IP、flags的值,CPU断续从断点开始执行。这样控制就转到中断服务程序.TF.IF.PF.AF,同时FLAGS里面的中断位发生变化,把对应地址上的数据取出来; 寄存器直接寻址就是把寄存器的数值当成结果; 寄存器间接寻址就是把寄存器的数值当成内存地址,把对应内存地址中的数据取出来,中断的位置是固定的:0100H装载到CS:IP中以便进行跳转执行, 于是SS不变,CS和IP分别变为0100H和0040H, 其各个位的定义, 其中第0.2.4.6.7.8.9.10
采纳率:60%
为您推荐:
其他类似问题
换一换
回答问题,赢新手礼包
个人、企业类
违法有害信息,请在下方选择后提交
色情、暴力
我们会通过消息、邮箱等方式尽快将举报结果通知您。扫二维码下载作业帮
3亿+用户的选择
下载作业帮安装包
扫二维码下载作业帮
3亿+用户的选择
微机原理堆栈物理地址SP,将1234ABCDH压入堆栈,堆栈指示器是SP=0100H,堆栈段寄存器SS=A000H,最后栈顶SP是多少?(答案是00FCH)为什么会是这个答案,不是SS*10H+SP就是物理地址了吗 为什么要减一
作业帮用户
扫二维码下载作业帮
3亿+用户的选择
堆栈只能是字操作,将1234abcdh压入分为1234和abcd,从sp=0100h开始,12去00ffh,34去00feh,ab去00fdh,cd去00fch,此时sp指向cd处即sp=00fch即答案物理地址=ss*10+sp=a0000h+00fch=a00fch
为什么12不是直接就去0100h?为什么要减一
执行push指令时,首先堆栈指示器sp自动减2,然后将一个字已源操作数送至栈顶
为您推荐:
其他类似问题
扫描下载二维码

我要回帖

更多关于 状态标志寄存器 的文章

 

随机推荐