汇编语言程序设计期末考试考点

小知识点

  1. 2的10次是1k

  2. 地址总线是20位时, 内存最大1m 原因: 2的20次方 1024k=1M

  3. 变量就是存储单元 指向首地址


段寄存器 偏移地址

段寄存器通用寄存器
CSIP
SSSP或BP
DSBX、SI、DI或一个16位数
ESDI(用于串指令)
  • CS 代码段 IP # CS只能做源操作数,不能做目的操作数 MOV CS, AX; 错误

  • DS 数据段 BX、SI、DI或一个16位数

  • SS 堆栈段 SP或BP

  • ES 附加段

段基值(16位) 左移4位(即末尾加上4位二进制0) = 段基址

EA(有效地址) = 基地址 + (变址值 X 比例因子) + 位移量

物理地址 = EA + 段基址


其他

  1. 一台计算机所能执行的全部指令,称为该机的指令系统或指令集,具体内容包括指令格式寻址方式指令类型

指令系统层是硬件和软件之间的接口,硬件的任务是执行指令,程序则体现为指令序列

  1. 8086CPU是16位微处理器,CPU的内外数据总线为16位,一个总线周期可以传送一个字(16位)数据,地址总线为20位,可寻址1MB主存空间
    串行 顺序 必须在一条指令执行完后,才能从主存中读取下一条指令

8086/8088CPU的主存容量为1MB,其主存单元地址为20位,而CPU内部的寄存器和数据通路是16位,如何将16位地址码扩展到20位?

解决办法:将1MB主存空间划分为若干段,每个段的最大长度为64KB。相应的在BIU中设置寄存器,用以存放20位起始地址的高16位,称为段基值,由EU或指令指针IP提供段内的偏移地址(又称偏移量):一个主存单元与所在段的段基址之间的字节距离

地址总线20位 00000H-FFFFFH ,字节存储,字存储,双字存储

有效地址:通常有CPU按指令的寻址方式计算得到或由指令指针IP提供

逻辑运算指令

DEST;目的操作数 SRC:源操作数

  • AND逻辑与指令
    • 指令格式: AND DEST,SRC
    • 有0为0,或有1为1
  • OR 逻辑或指令
    • 指令格式:OR DEST,SRC
    • 一个为1结果就为1
  • XOR 逻辑异或指令
    • 指令格式:XOR DEST,SRC
    • 相同则为0,不相同则为1
  • NOT逻辑非指令
    • 指令格式: NOT DEST
    • 取反

注意:上述操作中除了NOT以外,都会置CF、OF为 0

算数运算类指令

  1. ADD加法

    • 指令格式:ADD DEST,SRC
    • 两个数相加,结果存入DEST中
  2. MOV 传送指令

    • 指令格式:MOV DEST, SRC
    • 把SRC中的操作数复制给DEST
  3. XCHG 交换指令

    • 指令格式:MOV DEST, SRC
    • 将源操作数和目的操作数的内容相互交换
  4. 减法运算指令

    1. SUB指令

      • 指令格式:SUB DEST, SRC
      • 完成从目的操作数中减少去源操作数 ,即:SEST = (SEST) -(SRC)
    2. DEC指令

      • 指令格式:DEC DEST
      • 作用:自减一,DEST = (DEST) - 1
    3. CMP指令

      • 指令格式:CMP DEST, SRC
      • 两个操作数做差,不保留结果,只保留其中改变的标志位:OF,SF,ZF,AF,PF等

位移指令

  • SHL 逻辑左移
  • SHR 逻辑右移
  • SAL 算数左移
  • SAR 算数右移
  • ROL 循环左移
  • ROR 循环右移
  • RCL 带进位循环左移
  • RCR 带进位循环右移

指令格式:

RCL	DEST,	COUNT

汇编计算程序案例

数据段定义格式:

DATA SEGMENT ;数据段

DATA ENDS

堆栈段定义格式:

STACK1 SEGMENT PARA STACK ;堆栈段
	DW 20H DUP (0)
STACK1 ENDS
CODE SEGMENT ;代码段
	ASSUME CS: CODE , DS:DATA,ES:EXTERA;假设各个段存储位置
START:   MOV AX, DATA			 ;置段基指于DS
         MOV DS,AX

		指令序列
	
	 	MOV AH,4CH				;调用4CH功能,4CH功能号
            INT 21H			 	 ;终止程序
CODE	ENDS
		END		START

汇编语言语句格式(案例):

计算:
F = ( 10 ∗ ( X + Y ) − 3 ∗ ( Z − 1 ) ) / 2 F = (10 * (X + Y)-3 * (Z-1))/2 F=(10(X+Y)3(Z1))/2
结果存储在FUN中

DATA	SEGMENT;设置数据段
VARX	DW	123H;定义变量x
VARY	DW	456H;Y
VARZ	DW	789H;Z
FUN		DW	?


设置堆栈
DATA ENDS
STACK1 SEGMENT PARA STACK;
               DW 20H DUP(0)
STACK1 ENDS


CODE SEGMENT;设置代码段
            ASSUME CS: CODE, DS: DATA, SS: STACK1 ;假设各个段存储位置
STAET:      MOV AX, DATA			;置段基指于DS
            MOV DS,AX
            
            MOV AX,VARX				;取变量并且复制到AX中
            ADD AX,VARY				;AX = (X+Y)
            MOV BX,AX				;BX = AX = (X+Y)
            SAL AX,1				;AX = 2 * (X+Y)   算数左移,相当于 X2
            SAL AX,1				;AX = 4 * (X+Y)
            ADD AX,BX				;AX = 5 * (X+Y)
            SAL AX,1				;AX = 10 * (X+Y)
            MOV BX,VARZ				;取变量Z
            DEC BX					;BX = BX-1 = Z-1
            MOV CX,BX				;CX = BX = Z-1
            SAL BX,1				;CX = 2 * (Z-1)
            ADD BX,CX				;BX = 3 * (Z-1)
            SUB AX,BX				;AX = 10 * (X+Y) - 2 * (Z-1)
            SAR AX,1				;ax = {10 * (X+Y) - 2 * (Z-1)}/2  算数右移,相当于 /2
            MOV FUN,AX				;存放结果
            
            MOV AH,4CH				;调用4CH功能,4CH功能号
            INT 21H					;终止程序
ODE ENDS
      END START
  • 0
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称(   )   A.段地址         B.偏移地址   C.物理地址        D.逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有(   )   A.2345H        B.12345H   C.12340H       D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是(   )   A.XOR BX,BX    B.OR BX,BX   C.AND BX,BX    D.CMP BX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是(   )   A.CX≠0且ZF=1    B.CX≠0且ZF=0   C.CX≠0或ZF=1    D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是(   )   A.DAA校正指令的功能已自动加在AH中   B.进位值在AF中,校正后根据AF内容再加在AH中   C.进位值在CF中,校正后根据CF内容再加在AH中   D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中 6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是(   )   A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位   B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0   C.指令AND AX,OFH执行后,分离出AL低四位   D.NOT AX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是(   )   A.STOSW        B.ADD AL,CL   C.NEG BX       D.INC DA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是(   )   A.ADD BH,01H     B.OR BH,01H   C.XOR BH,01H     D.TEST BH,01H 9.完成对CL寄存器的内容乘以4的正确操作是(   )   A.ROL CL,1        B.MUL 4     ROL CL,1   C.SHL CL,1        D.MOV CL,2    SHL CL,1             SHL CL,CL 10.下面各传送指令中,正确的是(   )   A.MOV [DI],[SI]            B.MOV[DX+DI],AL   C.MOV WORD PTR [BX],0100H       D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法(   )   A.名字的第一个字符可以是大写英文字母及小写英文字母   B.名字的第一个字符可以是字母、数字及、@、_   C.名字的有效长度≤31个字符   D.在名字中不允许出现$ 12.要实现使BETA的值为56,应采用语句为(   )   A.BETA DB 56      B.BETA DB 56H   C.BETA EQU 56      D.BETA EQU 56H 13.REPZ CMPSW指令,重复执行的终止条件是(   )   A.CX=0或ZF=0      B.CX=0且ZF=0   C.CX=0或ZF=1      D.CX=0且ZF=1 14.下面程序段执行后,AL中的内容是(   )   MOV AX,8833H   ADD AL,AH   DAA   A.21       B.21H   C.0C1H      D.0DDH 15.比较两个带符号的数A、B,当A=B时程序转移,测试的条件为(   )   A.ZF=1      B.ZF=0   C.SF=1      D.SF=0 16.检查二个无符号数的关系,若要实现AL≥BL时分支去LOP1处,那么在“CMP AL,BL”指令后应跟的分支指令是(   )   A.JNC LOP1      B.JA  LOP1   C.JC LOP1      D.JGE  LOP1 17.在下列串操作指令中,同时使用源串和目的串地址指针的指令是(   )   A.STOSW      B.LODSW   C.SCASW      D.CMPSW 18.设AL=0AH,下列指令执行后能使AL=05H的是(   )   A.NOT AL         B.AND AL,0FH   C.XOR AL,0FH      D.OR AL,0FH19.DA1  DW‘AB’,‘CD’,‘EF’,‘GH’(   )     ┇    MOV AX,DA1+3  指令执行后AX中的内容是  A.‘EF’   B.‘CD’  C.‘BC’   D.‘FC’20.使用DOS系统功能调用时,使用的软中断指令是(   )  A.INT 21      B.INT 10H  C.INT 16H     D.INT 21H二、填空题(本大题共12空,每空0.5分,共6分)请在每小题的空格中填上正确答案。错填、不填均无分。21.十六进制数0FFF8H表示的十进制正数为________,表示的十进制负数为________。22.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,(SI+COUNT)中,源操作数的有效地址EA为________,其物理地址为________。23.CPU的标志寄存器中标志位,可以分为两大类,其中一类称为________标志位,另一类称为________标志位。24.当标志位________=1时表示无符号数运算产生溢出,而当标志位________=1是表示带符号数运算产生溢出。25.如JMP指令采用段间间接寻址,那么由4个相邻字节单元中存放有转移地址,其中前两个字节存放的是________,而后两个字节存放的是________。26.在串操作程序中,通常在重复前缀指令REPZ或REPNZ后,选用的串操作指令是________或________才有实际意义。三、简答题(本大题共4小题,每小题2分,共8分)27.已知:BX=1357H,DI=2000H,DS=2000H,CS=4000H,分别指出下面各指令中存储器操作数的物理地址。(1)MOV AL,[BX](2)MOV CS:[BX+DI],AH28.0P1 DB 1,2 0P2 DW 3412H,5678H┇ MOV AX,OP1+1;字单元(OP1+1) AX MOV BL,OP2+1;字节单元(OP2+1) BL 上述二条传送语句有语法错误,请根据注释字段的说明,将其改正。29.下列语句在存储器中分别为变量分配多少字节? (1)AD2 DW 10 DUP(?),10 (2)AD3 DD 100 DUP(?)30.简述下面两条指令分别是什么语法错误? MOV [BX],[SI] MOV AX,DL四、程序分析题(本大题共6小题,每小题6分,共36分)31. MOV DL,AL   NOT DL   TEST DL,04H   JE NEXT        ┇ NEXT:…   若上述程序段执行时产生分支,说明AL中的数第几位一定为1?程序段执行后CF是多少?32.DA1  DB‘ABCDEFGHI’  DA2  DB  9 DUP(0)    ┇    LEA SI,DA1    LEA DI,DA2    MOV CX,9    CLD  LOP: LODSB    SUB AL,10H    STOSB    LOOP LOP    . . . 试问:①写出程序执行后DA2各字节中的数据。   ②保持程序功能情况下,程序中 可否改写为 33.已知:BX=4567H   NEG BX   INC BX   NEG BX   DEC BX 程序段执行后,BX=________,CF=________。34.   MOV BL,64H     MOV CL,03H     XOR AX,AX AGAIN:ADD AL,BL    ADC AH,0    DEC CL    JNZ AGAIN 问:(1)该程序段完成的功能是:   (2)AX=________。35.已知数据段中定义 DAT1 DB  12H,34H,56H,78H    MOV CX,0    MOV AX,WORD PTR DAT1    MOV CL,DAT1+3 当程序段执行完后AX=________,CX=________。36.DA1  DB 83H,72H,61H,94H,5AH    ┇     MOV CX,WORD PTR DA1     AND CX,0FH     MOV AL,DA1+3     SHL AL,CL  上述指令序列执行后,AL=_______,CL=_______。五、程序填空题(本大题共2小题,每小题6分,共12分)37.在NUMW单元存放有一个0-65535范围内的整数,将该数除以500,商和余数分别存入QU1和REM单元,请在空行处各填上一条指令完善该程序。   ┇ MOV AX,NUMW _____________ XOR DX,DX DIV BX MOV QUI,AX  _____________38.某程序欲用单个字符显示的2号功能调用去显示STRING中的字符串‘COMPUTER’(不显示字符‘$’!).试在空白处填上适当的一条指令。 STRING DB‘COMPUTER’,‘$’ ┇ MOV BX,0FFSET STRING LOP:MOV DL,[BX]    MOV AH,02H    INT 21H    ____________________    ____________________    JNE LOP六、编程序题(本大题共2小题,第39小题6分,第40小题12分,共18分)39.试编制一程序段,用串操作指令实现以DA_BY为首址的20H个字节单元中存放相同字符‘Y’(设DA_BY存储区已有ES指向)。40.试编制一源程序,统计DA1字单元中含0的个数,如统计的个数为奇数,则将进位位置1,否则进位位清0。    DATA  SEGMENT    DA1  DW  XXXX    DATA ENDS2006年10月汇编语言程序设计试题答案  来源: http://www.csai.cn 2006年10月汇编语言程序设计试题答案一、1、C;2、D;3、A;4、B;5、C;6、C;7、D;8、B;9、C;10、C;11、B;12、C;13、A;14、B;15、A16、C;17、D;18、C;19、D;20、B二、21、+65528;-3276022、20A8H;11488H23、状态;控制24、CF;OF25、IP;CS26、STOS;CMP三、27、(1)21357H;(2)43357H28、MOV AX,WORD PTR(OP1+1)    MOV BL,BYTE PTR(OP2+1)29、(1)22;(2)40030、MOV指令不能在两个存储器操作数之间进行;    操作数类型不匹配四、31、第2位;CF=032、123456789;不能更改33、BX=4565H;CF=134、AX=012CH,将AX内容乘3送BX中35、AX=3412H,CX=0078H36、AL=0A0H,CL=03H五、37、MOV BX,500    MOV REM,DX38、INC BX    CMP [BX],24H六、39、LEA DI,DA_BY        MOV CX,32        MOV AL,‘Y’        CLD        REP STOSB40、CODE SEGMENT          ASSUME CS:CODE,DS:DATA       START: MOV  AX,DATA              MOV  DS,AX              LEA  SI,DA1              MOV  CX,16              XOR BL,BL       AGAIN: MOV  AL,[SI]              HL AL,1              JC NEXT              INC BL        NEXT:INC SI              LOOP AGAIN              TEST BL,01H              JNE  L1              CLC              JMP DONE           L1: STC         DONE: MOV AH,4CH               INT 21H         CODE ENDS              END START  
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值