一:填空
1. AX又被称为(累加)器。
2. PF=1表示(低八位1的个数)为偶数。
3. *** 作数直接存放在指令中,紧跟在 *** 作码之后,他作为指令的一部分存放在代码段里,这种 *** 作数称为(立即数)。
4. 62A0H+9D60H=(10000)H
5. 标号和变量都有三种属性:(1、段属性 2、偏移属性 3、类型属性)。
6. 在另一个模块中定义而要在本模块中使用的符号必须使用(段寻址)伪 *** 作。(这题不肯定)
7. 逻辑运算是按(位) *** 作。
8. 循环程序通常由(初始化、循环工作与控制、循环结束的处理部分)三部分构成。
9. 129=(100000001)B
10. 机器数为88H,带符号十进制数(-120) 解题过程:88H即10001000B 第一个1表示是负数,而机器中的数都是以补码表示,补码又是原码变反加一,倒推一下,所以对应的正数是01111000,即120,所以~~
11. 将高级语言源程序翻译成机器语言程序的系统程序是(目标程序)。
12. (BP)称为基址指针寄存器。
13. 标识运算结果正负的标志是SF。SF=(1)时结果为正。
14. 8086实模式下一个段的大小可达(64K)B
15. 8086中可用于寄存器间接寻址的四个寄存器是(SP、BP、SI、DI)。
16. 在移位指令中,若移位次数大于1,就可将移位次数置于(CL寄存器)中。
17. 宏由(MACRO、ENDM)这一对伪指令来定义。
18. 访问堆栈的指令(如PUSH)只能使用(SS--堆栈段)作为段寄存器。
19. 指令CLD用于清除方向标志而(STD)指令使方向标志置1。
二。简答
根据以下要求,分别写出相应的汇编语言指令或指令序列。
1.把AX寄存器和BX寄存器的内容相减,结果存入AX中。
SBB AX,BX
2.将AX的内容逻辑左移5位。
MOV CL,5
SHL CL
3.将AX的内容,减去0520H和上次运算的借位。
SBB AX,0520H
4.将变量名TABLE的段地址送AX。
MOV AX,SEG TABLE
5.将DI的高四位置为0。
AND DI,0FH
6.输出一个字节到61H号端口。
OUT 61H,AL
7.将SI和DI的内容互换。
XCHG SI,DI
这段代码貌似没有设置cx的值 这是个问题你其实是不懂REPNE SCASB这行的意思
SCASB指令常与循环指令REPZ/REPNZ合用。例如,REPNZ SCASB 语句表示当 寄存器ECX>0 且 标志寄存器ZF=0,则再执行一次SCASB指令。
比较寄存器AL的值不相等则重复查找的字
ECX 是比较时的最大次数,每扫描一次,ECX减1,当ECX减小到0时,将停止扫描。
所以停止扫描的条件是两个,找到了字符或者已经达到最大次数,未找到字符。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)