当前位置:首页 >> 政史地 >>

汇编语言程序设计复习


知识点 第一章 基础知识 (1)正负数的补码表示, 掌握计算机中数和字符的表示; eg. 假 设 机 器 字 长 为 8 位 , [+3] 补 =00000011 B , [-3] 补 = 11111101 H 。 十六进制数 0FFF8H 表示的十进制正数为 65528D , 表示的十进制 负数为 -8D 。 8 位二进制数被看成是带符号补码整数时,其最小值是 -128 ,最大

值是 127 。 第二章 80x86 计算机组织 (1)中央处理机 CPU 的组成和 80x86 寄存器组,重点:专用寄存器,段寄存器 eg: IP 寄存器中保存的是?代码段中的偏移地址 FLAGS 标志寄存器中共有几位 条件状态位 6 位,有几位控制状态位 2 位,标志寄存器分为哪 2 类?陷阱标志, 中断标志。 (2) 存储单元的地址和内容 每一个字节单元给以一个唯一的存储器地址,称为 物理地址; 一个存储单元中存放的信息称为该存储单元的内容。存储器地址的分 段, (低位字节存放)低地址, (高位字节存放)高地址 ;实模式下逻辑地址、 选择器和偏移地址 ;物理地址的表示 段基地址加上偏移地址。 eg.如果 SS=6000H,说明堆栈段起始物理地址是_____60000H___。 已知字节 (00018H) =14H, (00017H) 字节 =20H, (00017H) 则字 为__1420H______。 如果(SI)=0088H, (DS)=5570H,对于物理地址为 55788H 的内存字单元, 其内容为 0235H,对于物理地址为 5578AH 的内存字单元,其内容为 0E60H,那么 执行指令 LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H . 第三章 80x86 的指令系统和寻址方式 与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式, 寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址 寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间 直接寻址,段间间接寻址) 。数据传送指令(通用数据传送指令、累加器专用传 送指令、输入输出指令) 、算术指令(加法指令、减法指令(*加减指令对 4 个标 志位的影响[of,cf,sf,zf]) 、乘法指令(*乘法指令的要求:目的操作数必须是 累加器) 、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数 在?)、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST 指令及指令执行后对标 ) 志位的影响) 、移位指令) 、串处理指令(与 REP 相配合工作的 MOVS、STOS、LODS 指令,与 REPE/REPZ 和 REPNE/REPNZ 联合工作的 CMPS、SCAS 指令) 、控制转移指 令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断) 。 eg. 【 习 题 3.8 】 假 定(DS)=2000H , (ES)=2100H , (SS)=1500H , (SI)=00A0H ,

(BX)=0100H,(BP)=0010H,数据段中变量名VAL的偏移地址为0050H,试指出下列 源操作数字段的寻址方式是什么?其物理地址值是多少? (1) MOV AX, 0ABH (2) MOV AX, BX (3) MOV AX, [100H] (4) MOV AX, VAL (5) MOV AX, [BX] (6) MOV AX, ES:[BX] (7) MOV AX, [BP] (8) MOV AX, [SI] (9) MOV AX, [BX+10] (10) MOV AX, VAL[BX] (11) MOV AX, [BX][SI] (12) MOV AX, VAL[BX][SI] 假定 (DS)= 1000H, (SS)= 2000H, (SI)= 3000H, (BX)= 0100H, (BP) = 0200H,数据段中变量名为 OVAR 的偏移地址值为 0050H,请指出下列源操作数 的寻址方式是什么?其物理地址值是多少? 1. MOV DX, [1000H] 2. MOB DX, [BX] 3. MOV DX, OVAR[BP] 4. MOV DX, [BX+SI] 5. MOV DX, OVAR[BX][SI] 如果 JMP 指令采用段间间接寻址,那么转移地址存放在 4 个相邻字节单元中,其 中前两个字节存放的是 偏移地址 ,而后两个字节存放的是 段地 址 。 设 SP=4AH,执行段内返回指令 RET 4 后,SP 的值是 重复前缀指令 REP 的重复次数由 计数寄存器 Count Reg 50H 。 决定。

在串操作指令前使用重复前缀指令 REPE,终止串的重复操作条件是 (Count Reg)=0 或 ZF=0

条件转移指令的转移范围?(只能做段内的短转移) 转移指令 JMP NEAR PTR PROCA 的转移范围是 8000H~7FFFH 。 OF

当标志位 CF =1 时表示无符号数运算产生溢出,而当标志位 =1 是表示带符号数运算产生溢出。 计算机系统通过 和外部设备通信。

循环控制指令 LoopNZ/LoopNE 控制循环继续执行的条件是_ZF=0 且(Count Reg) 不等于 0_______。 DOS 系统功能调用方式为:(1)设置入口参数;(2)中断程序编号送 器后执行 INT 21H。(教材 Page320,page335) 阅读下面的程序片段,并分析执行结果。 MOV AX,723AH MOV BX,0C86BH SUB AL,BL SBB AH,BH XOR AL,01H AH 寄存

ADC AX,0 执行该程序片段后: (AX)= 0A9CEH

,CF =

0

,OF =

0



第四章 汇编语言程序格式 伪操作: 数据定义及存储器分配伪操作, 表达式赋值伪操作 EQU, 段定义伪操作、 程序开始和结束伪操作、对准伪操作、基数控制伪操作。 汇编语言程序格式:汇编语言源程序中的每个语句的组成格式:名字项、操作项 (包括?) 、操作数项和注释项 eg.1.在某数据段内定义变量 BUFFER DB 30 DUP (20) 表达式 TYPE BUFFER 的值为 1 COUNT EQU $-BUFl 变量 COUNT 的值是 18 3.DATA VAR1 SEGMENT DUP(0) DB 12H,34H DB 2EH



2.BUFl DB 3 DUP(0,2 DUP(1,2),3) 。

VAR2 DB 10H DUP(O) ADR1 DW VAR1,VAR2 DATA ENDS 为使 ADR1+2 字存储单元中内容为 0030H,横线上应选用的语句是_ORG $+30H____。 4.BUF DW 4,6,$+2,若汇编时 BUF 分配的偏移地址是 0042H,则汇编后 BUF 数 组中第三个字的值是 0048H 。 5.设某数据段: DATA SEGMENT ORG 20H NUM1=8 NUM2=NUM1+10H DA1 DB‘COMPUTER’ DB 0AH,0DH COUNT EQU $-DA1 DA2 DW ‘CO’,’MP’,’UT ,’ER’ DATA ENDS 请回答:(1)DA1的偏移地址是: 0020H 。 (2)COUNT的值是 10 。 (3)DA2+5 字节单元的内容是 ‘U’ 6.执行下列指令序列后,AX 寄存器中的内容是什么?



TABLE DW 10,20,30,40,50 ENTRY DW 3 …… MOV BX, OFFSET TABLE ADD BX, ENTRY MOV AX, [BX] 7. 下面指令执行后,变量 DAB 中的内容是____0F5H____。
DAW DW 2A05H DAB DB 0FAH : MOV AL,BYTE PRT DAW SUB DAB,AL

第五章 循环与分支程序设计 循环程序结构,分支程序结构 eg. BEG为起始地址的存储区域中存放有100个字节数据, 现将其首、 尾颠倒过来, 重新排放这100个字节数据。请在空行处各填上一条指令完善该程序。 MOV CX,31H LEA SI,BEG MOV DI,SI ADD DI,99 DON:MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL INC SI DEC DI LOOP DON 阅读如下程序段: ADRR DB XXH,XXH,……,XXH NUM EQU $-ADRR RETT DB? … MOV CX,NUM MOV BX,-1 DON:INC BX CMP ADRR[BX],0 LOOPZ DON JNZ NEXT MOV BL,OFFH NEXT:MOV RETT,BL HLT 请回答(1)该程序完成的功能是什么?在以ADRR为起始地址的数组中,查找第

一个非0数据
(2) 程序执行后RETT字节单元中的内容是什么?若找到则将第一个非零数据在

数组中的偏移量送入RETT单元中;若无非0数据,则将0FFH送入RETT单元中。
阅读如下程序片段,回答所提出的问题,假定X1,X2,…XN为无符号数。 ORG 100H BLOK DW X1,X2,…,XN COUNT EQU($-BLOK)/2 RESULT DW ? … LEA BX,BLOK-2 MOV CX,COUNT XOR AX,AX GOON:ADD CMP JAE MOV BX,2 AX,[BX] NEXT AX,[BX]

NEXT:LOOP GOON MOV RESULT,AX 程 序 片 段 执 行 完 后 , RESULT 字 单 元 的 内 容 = Xn) , (BX)= COUNT 100H+2*(COUNT-1) 。

MAX(X1,X2, …

,程序循环次数=

下列程序片段用来分别统计ARRAY数组中奇数和偶数的个数。请在空白处填写合 适的指令。 DATA SEGMENT ARRAY DW 23ABH,1570H,567,1765H,46,5210H COUNT EQU ($-ARRAY)/2 DA1 DB ? DA2 DB ? DATA ENDS …… LEA SI,ARRAY MOV CX,COUNT LOP1:MOV AX,[SI] TEXT AX,0001H JZ LOP2 INC BL JMP LOP3 LOP2:INC BH LOP3:ADD SI,2 DEC CX JNZ LOP1

MOV MOV

DA1,BL DA2,BH

下列程序片段调用单个字符显示的2号功能显示STRING中的字符串‘COMPUTER’ (不显示字符‘$’)。 (调用DOS的2号功能实现) STRING DB‘COMPUTER’,‘$’ ┇ 设AX,BX中的数一个为正数,一个为负数,编写程序片段完成将正数送到PLW单 元中存放 。 编程实现:
TEST AX,8000H JE K1 或 JZ K1 MOV PLW,BX JMP DONE K1: MOV PLW,AX DONE:

习题 5.3,5.23 1.从键盘输入一个以$为结束符的字符串,统计其中的非数字字符个数。 DSEG SEGMENT BUFF DB 50 DUP (‘ ’) COUNT DW 0 DSEG ENDS ┇ BEGIN: LEA BX, BUFF MOV COUNT, 0 INPUT: MOV AH, 01 ; INT 21H MOV [BX], AL INC BX CMP AL, ‘$’ ; JNZ INPUT ; LEA BX, BUFF ; NEXT: MOV CL, [BX] INC BX CMP CL, ‘$’ ; JZ DISP CMP CL, 30H ; JB NEXT CMP CL, 39H ;

JA NEXT INC COUNT ; JMP NEXT DISP: ┇ ; 2. 试编写一程序段求出双字长数的绝对值。双字长数在 A 和 A+2 单元中,结果 存放在 B 和 B+2 单元中。
MOV AX, A MOV DX, A+2 CMP DX, 0 JNS ZHENSHU ;不是负数则转走 NEG DX NEG AX SBB DX, 0 ZHENSHU: MOV B, AX MOV B+2, DX INT 20H

3. 把 0~100 之间的 30 个数存入以 GRADE 为首地址的 30 字数组中,GRADE+i 表 示学号为 i+1 的学生的成绩。 另一个数组 RANK 为 30 个学生的名次表, 其中 RANK+i 的内容是学号为 i+1 的学生的名次。编写一程序,根据 GRADE 中的学生成绩,将 学生名次填入 RANK 数组中。(一个学生的名次等于成绩高于这个学生的人数加 1。) DSEG SEGMENT GRADE DW 30 DUP (?) ; RANK DW 30 DUP (?) DSEG ENDS ;-----------------------------------------------------------------CSEG SEGMENT MAIN PROC FAR ASSUME CS: CSEG, DS: DSEG START: PUSH DS ; SUB AX, AX PUSH AX MOV AX, DSEG MOV DS, AX ; BEGIN: MOV DI, 0 MOV CX, 30 ; LOOP1: PUSH CX MOV CX, 30 ; MOV SI, 0 MOV AX, GRADE [DI] MOV DX, 1 ; LOOP2: CMP GRADE [SI], AX ;

JBE GO_ON INC DX ; GO_ON: ADD SI, 2 LOOP LOOP2 POP CX MOV RNAK [DI], DX ; ADD DI, 2 LOOP LOOP1 RET MAIN ENDP CSEG ENDS ; ;---------------------------------------------------------END STAR 4.写出执行以下计算的指令序列,其中 X、Y、W 和 Z 均为存放 16 位带符号数单 元的地址。 Z←((W-X)/5*Y)*2 MOV AX, W SUB AX, X CWD MOV BX, 5 IDIV BX IMUL Y SHL AX, 1 ;((DX),(AX))*2 RCL DX, 1 5. 实现下列算式:W=X+Y+36-Z。设 X、Y、Z、W 均为双字长数据,各自的低十六 位数和高十六位数分别存放在 X、X+2、Y、Y+2、Z、Z+2 的存储单元中,结果的 低十六位字和高十六位字分别存放在 W 和 W+2 两个单元中。 DATA SEGMENT X DD... Y DD... Z DD... W DD... DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV AX,X ADD AX,Y MOV BX,X+2 ADC BX,Y+2 ADD AX,36

ADC BX,0 SUB AX,Z SBB BX,Z+2 MOV W,AX MOV W+2,BX CODE ENDS ENG START 6. 试编制一源程序,统计 DA1 字单元中含 0 的个数,如统计的个数为奇数,则 将进位位置 1,否则进位位清 0。
DATA SEGMENT DA1 DW **** DATA ENDS STACK1 SEGMENT PARA STACK DB 10H DUP(0) STACK1 ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX MOV DH,0 MOV AX,DA1 MOV CX,16 LOOP:SHL AX,1 JC NEXT1 INC DH NEXT1:LOOP LOP CLC TEST DH,1 JZ END0 STC END0:MOV AH,4CH INT 21H

CODE:END S END START


相关文章:
《汇编语言程序设计》复习资料
汇编语言程序设计复习资料 汇编语言程序设计》一、基本概念 1、8088/8086CPU内部寄存器有__14___个 ,其中的AX、BX、CX、DX是通用寄存器,SP、BP、DI、SI ...
上海大学汇编语言程序设计复习提纲
上海大学汇编语言程序设计复习提纲_工学_高等教育_教育专区。《汇编语言程序设计》复习提纲第二章 80X86 计算机组织 1.计算机的硬件构成 5 部分,总线的分类与名称...
汇编语言程序设计试题
汇编语言程序设计试题_工学_高等教育_教育专区。计算机语言江苏牧院 汇编语言程序...汇编语言程序设计 —模拟... 7页 免费喜欢此文档的还喜欢 汇编语言期末复习题...
汇编语言程序设计复习题答案
汇编语言程序设计复习题答案_IT/计算机_专业资料。汇编语言程序设计《汇编语言程序设计》复习题 汇编语言程序设计》一、填空题 1、8086CPU 内部结构按功能分为两部分...
汇编语言程序设计期末复习
汇编语言程序设计》期末复习 汇编语言程序设计》 1.在无段超越说明时,下列操作分别自动选择哪个段:通用数据读写___,取指令___。 2.通常变量在数学中是无属性...
汇编语言程序设计-A-10-2期末考试复习资料
汇编语言程序设计复习资料 1.执行后使 BX=0 的同时也使 CF=0,OF=0 的指令是 XOR BX,BX。 2.循环控制指令 LoopNZ/LoopNE 控制循环继续执行的条件是 CX≠0...
汇编语言程序设计复习(附答案完整版)
汇编语言程序设计复习指南 4页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 汇编语言程序设计复习(附答案完整版...
《汇编语言程序设计》复习样题
汇编语言程序设计复习... 12页 1财富值如要投诉违规内容,请到百度文库投诉中心;如要提出功能问题或意见建议,请点击此处进行反馈。 ...
《汇编语言程序设计》复习
汇编语言程序设计复习_工学_高等教育_教育专区 暂无评价|0人阅读|0次下载|举报文档《汇编语言程序设计复习_工学_高等教育_教育专区。一、填空题 概念二、...
最新版汇编语言程序设计习题答案详解
最新版汇编语言程序设计习题答案详解_工学_高等教育_教育专区。钱晓捷 主编新版...汇编语言期末复习题大全... 31页 5下载券 新版汇编语言程序设计1-... 74页...
更多相关标签: