2021.11.10汇编考试

2021.11.10汇编考试,第1张

2021.11.10汇编考试

随便记录一下,比较零散

目录
    • 储存器寻址方式的区别
    • 两种符号扩展指令
    • db指令定义字符串
    • 取出一个段的段地址
    • SF和OF标志位
    • 带借位的减法指令sbb
    • 寄存器的第x位指的是哪个
    • 立即数寻址和直接寻址的区别
    • 段寄存器和mov指令的配合
    • dosbox中的标志位怎么看
    • 一些常见指令对标志位的影响

储存器寻址方式的区别

2.指令MOV AX, [BX+DI]中源 *** 作数的寻址方式是:( d )(5分)
A. 寄存器间接寻址
B. 寄存器寻址
C. 寄存器相对寻址
D. 基址变址寻址

①对于储存器寻址来说
可用来寻址的寄存器有
基址寄存器:bp和bx
变址寄存器: bi和si
变址寄存器和基址寄存器不可以同时使用
②寄存器间接寻址意味着只用寄存器的内容来充当偏移地址:[bx]
③寄存器寻址中的“相对”寻址意味着在寄存器的基础上加一个偏移量:[bx+666]

两种符号扩展指令

3.执行指令“MOV AL, 85H”和“CBW”后,AX寄存器的内容是:( c )(5分)
A. 85H
B. 0085H
C. FF85H
D. 85F0H

①有两个符号扩展指令:cbw和cwd
按照我自己的理解方式
cbw:convert Byte to Word
这个指令可以将al这个数扩展到ax
cwd:convert Word to Double
这个指令可以将ax这个数扩展到dx.ax
所以,符号扩展指令的本质其实是类型的转换
②符号位扩展的方式比较简单,直接看该寄存器中的二进制编码方式,最高位如果是1,就扩展1,0就0

db指令定义字符串

4.数据段中定义一个变量VAR DB ‘12345678H’,执行指令“MOV CL,VAR+3”后,CL寄存器内容为:(b)(5分)
A. 12H
B. 34H
C. 56H
D. 78H

①db后面想要定义数字的话,大小不可以大于一个字节。如果定义字符串,那么会按照字符串从左到右的顺序,从低地址往高地址存字符,每个字符占用一个字节,那么,var+3之后,正好指向’4’这个字符,这个时候,查一下ascii表,符号‘4’对应的ascii码是34h

取出一个段的段地址

6.汇编语言中可以作为程序员自定义标识符使用的是:( a )(5分)
A. done
B. idiv
C. xlat
D. @data

@data取出数据段的段地址。比如,mov ax,@data

SF和OF标志位

7.若AX=1234H,执行指令“ADD AX,7802H”后,AX寄存器的内容和标志位CF,SF,ZF,OF的状态是:(b)(5分)
A. AX=8A36H CF=0 SF=1 ZF=1 OF=0
B. AX=8A36H CF=0 SF=1 ZF=0 OF=1
C. AX=9036H CF=0 SF=1 ZF=1 OF=0
D. AX=9036H CF=0 SF=1 ZF=0 OF=1

①OF: overflow flag。在考虑这个标志位的时候,需要把被加数和加数当成有符号数,也就是说,被加数和加数都是以补码形式存在的,进行相加之后,结果超出了16位补码最大的正数:0fff,即表示溢出,OF设置为1。也就是说,在考虑某个标志位的取值的时候,需要从计算机的角度而非你存放的数据的实际意义去考虑。
②SF:sign flag符号标志.结果的最高位是啥,SF就是啥
③SF和OF在进行有符号运算的时候有意义,但是在进行无符号运算的时候也会有值的变换。
④PF:奇偶标志位,PF会让该标志位和运算结果中的1的个数是奇数,即若运算结果中有奇数个1,则pf为0

带借位的减法指令sbb

12.若AX=1020H, BX=1200H, CF=1,则指令“SBB AX, BX”的执行结果为:(b)(5分)
A. 0FE20H
B. 0FE1FH
C. 0FE21H
D. 01DFH

sbb指令需要考虑上次计算残留的借位,同时,本次计算如果借位了也需要修改CF的值。理论上,结果是ax-bx-cf,但是ax不够减,所以又要进行一次借位,即(F+1)020-1200-1=FE1F。因为这次计算借位了,那么完成之后,设cf=1

寄存器的第x位指的是哪个

14.已知(AL)=56H,若将AL的第0, 2, 6位变反而其它位保持不变,则使用指令( ) AL, BL; 其中(BL)=( a )。(5分)
A. XOR 45H
B. OR 45H
C. XOR 0A2H
D. AND 0BBH

从左往右开始第一位为第0位

立即数寻址和直接寻址的区别

①立即数寻址指的是一个数直接存放在指令中
②而直接寻址是一种储存器寻址,直接通过一个符号或者偏移量定位到内存单元,比如,mov ax,var或者mov ax,[var]

段寄存器和mov指令的配合

①在教材中,段寄存器的缩写是seg
②在汇编语言中,段寄存器有以s结尾的各种寄存器ds cs ss es
③在mov指令中,段寄存器不可以和立即数寻址结合在一起,即不允许:mov seg,imm

dosbox中的标志位怎么看

实验报告里的贴这里吧

一些常见指令对标志位的影响

①对循环指令的记忆,rcl中有一个c,代表这个指令需要考虑CF,即这是一个带进位的左循环指令
②rcl或者rol这些循环指令都影响CF,循环被挤出的数字会存放在CF中
③位运算指令and,or,xor这些指令都会直接将of和cf置0,原因不详,主要是不同指令在设计的时候有其具体的目的,对标志位的影响能力都不同,所以就先记住吧,应付下考试
④mov指令不影响标志位,主要用来传送数据

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

原文地址: http://outofmemory.cn/zaji/5155026.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-18
下一篇 2022-11-18

发表评论

登录后才能评论

评论列表(0条)

保存