汇编语言复习
汇编语言复习题(带答案)
汇编语言复习题(带答案)汇编语言期末复习题第1章:基础知识1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。
DXA、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。
DXA、名字项B、操作项C、操作数项D、注释项3、可屏蔽中断就是它的请求是否被CPU响应要受( IF )的控制。
DX4、使用LINK连接命令,执行后可生成文件的扩展名为( EXE )。
DX5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在堆栈段中,段地址在 SS 寄存器中。
TK6、注释项用于说明程序段或是一条和几条指令的功能,一般用;(或分号) 表示注释的开始。
TK7、DOS系统功能调用方式为:(1)置入口参数;(2)中断程序编号送 AH 寄存器后执行INT 21H。
TK8、通常主程序和子程序间参数传送的方法有三种:用寄存器传递、用存储单元传递、用堆栈传递(顺序可调换)。
TK9、中断是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。
在此,称引起紧急事务的事件为中断源。
TK10、在字符串操作指令中,DS∶ SI 指向源串,ES∶ DI 指向目的串。
TK11、计算机系统通过接口与外围设备通信。
TK12、键盘I/O、显示I/O和打印I/O分别对应 16H 、 10H 和 17H 号中断。
TK13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。
每个字的第一个字节为显示字符的 ASCII码,第二个字节为显示字符的属性。
TK14、简述上机运行汇编语言程序的过程。
JD答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。
汇编语言复习
1.进制转换:十进制转换为十六进制,二进制,十六进制转换为二进制。
P4十进制数125转换为16进制和二进制?2.汇编语言编写的程序称之为源程序(ASM),经过汇编成为目标程序(OBJ),目标程序经过连接成为可执行程序(EXE)。
P23.CPU的通用寄存器和标志寄存器(条件标志SF、ZF、OF、CF和控制标志IF、DF),基址寄存器为?P144.存储器的逻辑地址和物理地址。
P20物理地址(PA):用20位二进制或5位十六进制表示的存储单元的地址,为存储单元的实际地址。
逻辑地址:由段基址和段内偏移地址组成,形式为段地址:偏移地址有效地址(EA):段内偏移地址。
物理地址=段基址*16+EA (相当于段基址后补一个0,再加上EA)如段地址:0F3EH,偏移地址:0A8,则PA的值为?段寄存器使用约定。
P22 如DS,约定的寄存器BX,SI,DIDS=0A3EH,SI=2000H,COUNT=0A8H,指令MOV AX,[SI+COUNT]中EA=?PA=?如一个地址为23450,则段地址可以为1234或12340吗?5. 堆栈,P24执行push pop指令时堆栈的变化。
P25如(sp)=2005H,则push AX后,sp的值为?pop AX后SP的值为?6. 寻址方式:方即数寻址:mov ax,0A45H 源操作数的寻址方式为立即数寻址。
寄存器寻址:mov ax,0A45H 目的操作数的寻址方式为寄存器寻址。
直接寻址:mov ax,[2000H] 2000H为内存中某存储单元的地址。
mov al, buf寄存器间接寻址:mov ax,[SI] 源操作数为寄存器间接寻址。
若(si)=2000H, 则段地址在?mov ax,[bp],则段地址为?寄存器相对寻址:mov ax, 30 [BX]Mov bx, buf [BP]偏移地址为寄存器的值加上指令中给出的位移量,若为变量,则加上变量所指的地址。
基址变址寻址方式:mov ax,[bx][di] 注:必须有基址寄存器BX或BP已知:BX=1B57H,DI=2010H,DS=20A0H,ES=4C00H,(1) MOV AL,[BX](2)ADD AL,[BX+DI]以上两条指令源操作数的物理地址为?7.伪指令:在汇编过程中不产生相应的机器代码。
汇编语言考试复习题及答案
汇编语⾔考试复习题及答案⼀、单项选择题(从下列每题的四个选择中选择⼀个正确的,填⼊答题纸的相应位置。
每⼩题2分,共30分)1.下列指令有语法错误的是__________。
A) PUSH AL B) ADDC AX,50HC) MOV [SI],[DI] D) JMP WORD PTR[BX+5]见书:35页,PUSH2.执⾏下列程序段后,(AX)= ________。
TAB DW 1,2,3,4,5,6ENTRY EQU 3MOV BX, OFFSET TABADD BX,ENTRYMOV AX,[BX]A) 0003H B) 0300H C) 0400H D) 0004H3.NC 指令不影响 _________标志。
A) OF B) CF C) ZF D) SF4.执⾏下列指令后:STR1 DW ‘AB’STR2 DB 16 DUP(?)CNT EQU $ -STR1MOV CX,CNTMOV AX,STR1HLT寄存器CL的值是________,寄存器AX的值是________。
① A) 10H B) 12H C) 0EH D) 0FH② A) 00ABH B) 00BAH C) 4142H D) 4241H5.汇编语⾔源程序经汇编后不能直接⽣成⽂件。
A).OBJ B).LST C).EXE D).CRF6.8086 CPU在基址加变址的寻址⽅式中,已知BX=2000H,SI=1234H,则指令“MOV AX,[BX+SI+2]”的源操作在中。
(A)数据段中偏移量为3236H的字节(B)数据段中偏移量为3234H的字节(C)附加段中偏移量为3236H的字节(D)附加段中偏移量为3234H的字节(A)19,20 (B)20,⽆右孩⼦(C)⽆左孩⼦,20 (D)⽆左孩⼦,⽆右孩⼦7.执⾏下⾯的程序段后,DAT1单元的值是。
DAT1 DB 12H,34HDAT2 DB 56H,78HMOV AX,WORD PTR DAT1CMP AX,WORD PTR DAT2JA DONEMOV BX,WORD PTR DAT2MOV WORD PTR DAT2,AXMOV WORD PTR DAT1,BXDONE:HLTA)12H B)34H C)56H D)78H8.下列指令中,正确的⼀条是。
汇编语言复习题附答案
汇编语言复习题附答案一、选择题1. 汇编语言是一种()。
A. 高级语言B. 机器语言C. 低级语言D. 面向对象语言答案:C2. 在汇编语言中,指令通常由()组成。
A. 操作码和操作数B. 操作数和地址C. 操作码和地址D. 操作码、操作数和地址答案:A3. 汇编语言中的寄存器通常用来()。
A. 存储数据B. 存储指令C. 存储程序D. 存储地址答案:A4. 汇编语言中的指令MOV AX, BX的作用是()。
A. 将AX寄存器的值移动到BX寄存器B. 将BX寄存器的值移动到AX寄存器C. 将AX和BX寄存器的值相加D. 将AX和BX寄存器的值相减答案:B5. 汇编语言中的循环结构通常使用()指令实现。
A. JZB. JNZC. LOOPD. CALL答案:C二、填空题1. 汇编语言中的指令ADD AX, BX表示将AX和BX寄存器的值相加,并将结果存入____寄存器。
答案:AX2. 汇编语言中的指令SUB AX, BX表示将AX寄存器的值减去BX寄存器的值,并将结果存入____寄存器。
答案:AX3. 汇编语言中的指令CMP AX, BX用于比较AX和BX寄存器的值,但不进行存储操作,结果影响____标志。
答案:标志寄存器4. 汇编语言中的指令JMP LABEL用于无条件跳转到标签____处执行。
答案:LABEL5. 汇编语言中的指令PUSH AX将AX寄存器的值压入____。
答案:堆栈三、简答题1. 简述汇编语言与机器语言的区别。
答案:汇编语言是一种低级语言,它使用助记符来表示机器语言的指令,更易于人类理解和编写。
机器语言则是由二进制代码组成的指令集,直接被计算机硬件执行,但对人类来说难以阅读和编写。
2. 描述汇编语言中如何实现条件跳转。
答案:汇编语言中实现条件跳转通常使用条件跳转指令,如JZ(跳转如果零)、JNZ(跳转如果非零)、JMP(无条件跳转)等。
这些指令根据CPU的状态寄存器中的条件码标志来决定是否跳转到指定的标签处执行。
汇编语言复习资料
一、数据传送指令1*通用数据传送指令MOV(Move)传送PUSH(Push onto the stack)进栈POP(Pop from the stack)出栈XCHG(Exchange)交换*MOV指令格式为: MOV DST,SRC执行的操作:(DST)<-(SRC)*PUSH进栈指令格式为:PUSH SRC执行的操作:(SP)<-(SP)-2((SP)+1,(SP))<-(SRC)*POP出栈指令格式为:POP DST执行的操作:(DST)<-((SP+1),(SP))(SP)<-(SP)+2*XCHG 交换指令格式为:XCHG OPR1,OPR2执行的操作:(OPR1)<-->(OPR2)2*累加器专用传送指令IN(Input) 输入OUT(Output) 输出XLAT(Translate) 换码这组指令只限于使用累加器AX或AL传送信息* *IN 输入指令长格式为: IN AL,PORT(字节)IN AX,PORT(字)执行的操作: (AL)<-(PORT)(字节)(AX)<-(PORT+1,PORT)(字)短格式为: IN AL,DX(字节)IN AX,DX(字)执行的操作: AL<-((DX))(字节)AX<-((DX)+1,DX)(字)*OUT 输出指令长格式为: OUT PORT,AL(字节)OUT PORT,AX(字)执行的操作: (PORT)<-(AL)(字节)(PORT+1,PORT)<-(AX)(字)短格式为: OUT DX,AL(字节)OUT DX,AX(字)执行的操作: ((DX))<-(AL)(字节)((DX)+1,(DX))<-AX(字)在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH*其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号*所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口*当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来传送信息*XLAT 换码指令格式为: XLAT OPR或: XLAT执行的操作:(AL)<-((BX)+(AL))3*有效地址送寄存器指令LEA(Load effective address)有效地址送寄存器LDS(Load DS with Pointer)指针送寄存器和DSLES(Load ES with Pointer)指针送寄存器和ES*LEA 有效地址送寄存器格式为: LEA REG,SRC执行的操作:(REG)<-SRC指令把源操作数的有效地址送到指定的寄存器中*LDS 指针送寄存器和DS指令格式为: LDS REG,SRC执行的操作:(REG)<-(SRC)(DS)<-(SRC+2)把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中*该指令常指定SI寄存器**LES 指针送寄存器和ES指令格式为: LES REG,SRC执行的操作: (REG)<-(SRC)(ES)<-(SRC+2)把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中*该指令常指定DI寄存器*4*标志寄存器传送指令LAHF(Load AH with flags)标志送AHSAHF(store AH into flags)AH送标志寄存器PUSHF(push the flags) 标志进栈POPF(pop the flags) 标志出栈*LAHF 标志送AH格式为: LAHF执行的操作:(AH)<-(PWS的低字节)*SAHF AH送标志寄存器格式为: SAHF执行的操作:(PWS的低字节)<-(AH)*PUSHF 标志进栈格式为: PUSHF执行的操作:(SP)<-(SP)-2((SP)+1,(SP))<-(PSW)*POPF 标志出栈格式为: POPF执行的操作:(PWS)<-((SP)+1,(SP))(SP)<-(SP+2)二、算术指令1*加法指令ADD(add)加法ADC(add with carry)带进位加法INC(increment)加1*ADD 加法指令格式: ADD DST,SRC执行的操作:(DST)<-(SRC)+(DST)*ADC 带进位加法指令格式: ADC DST,SRC执行的操作:(DST)<-(SRC)+(DST)+CF*ADD 加1指令格式: INC OPR执行的操作:(OPR)<-(OPR)+12*减法指令SUB(subtract)减法SBB(subtract with borrow)带借位减法DEC(Decrement)减1NEG(Negate)求补CMP(Compare)比较*SUB 减法指令格式: SUB DST,SRC执行的操作:(DST)<-(DST)-(SRC)*SBB 带借位减法指令格式: SBB DST,SRC执行的操作:(DST)<-(DST)-(SRC)-CF*DEC 减1指令格式: DEC OPR执行的操作:(OPR)<-(OPR)-1*NEG 求补指令格式: NEG OPR执行的操作:(OPR)<- -(OPR)*CMP 比较指令格式: CMP OPR1,OPR2执行的操作:(OPR1)-(OPR2)该指令与SUB指令一样执行减法操作,但不保存结果,只是根据结果设置条件标志西半球*3*乘法指令MUL(Unsigned Multiple)无符号数乘法IMUL(Signed Multiple)带符号数乘法*MUL 无符号数乘法指令格式: MUL SRC执行的操作:字节操作数:(AX)<-(AL)*(SRC)字操作数:(DX,AX)<-(AX)*(SRC)*IMUL 带符号数乘法指令格式: IMUL SRC执行的操作:与MUL相同,但必须是带符号数,而MUL是无符号数*4*除法指令DIV(Unsigned divide)无符号数除法IDIV(Signed divide)带符号数除法CBW(Convert byte to word)字节转换为字CWD(Contert word to double word)字转换为双字*DIV 无符号数除法指令格式: DIV SRC执行的操作:字节操作:(AL)<-(AX)/(SRC)的商(AH)<-(AX)/(SRC)的余数字操作: (AX)<-(DX,AX)/(SRC)的商(AX)<-(DX,AX)/(SRC)的余数*IDIV 带符号数除法指令格式: DIV SRC执行的操作:与DIV相同,但操作数必须是带符号数,商和余数也均为带符号数,且余数的符号与被除数的符号相同**CBW 字节转换为字指令格式: CBW执行的操作:AL的内容符号扩展到AH*即如果(AL)的最高有效位为0,则(AH)=00;如(AL)的最高有效位为1,则(AH)=0FFH*CWD 字转换为双字指令格式: CWD执行的操作:AX的内容符号扩展到DX*即如(AX)的最高有效位为0,则(DX)=0;否则(DX)=0FFFFH*这两条指令都不影响条件码*三、逻辑指令1*逻辑运算指令AND(and) 逻辑与OR(or) 逻辑或NOT(not) 逻辑非XOR(exclusive or)异或TEST(test) 测试*AND 逻辑与指令格式: AND DST,SRC执行的操作:(DST)<-(DST)^(SRC)*OR 逻辑或指令格式: OR DST,SRC执行的操作:(DST)<-(DST)V(SRC)*NOT 逻辑非指令格式: NOT OPR执行的操作:(OPR)<-(OPR)*XOR 异或指令格式: XOR DST,SRC执行的操作:(DST)<-(DST)V(SRC)*TEST 测试指令格式: TEST OPR1,OPR2执行的操作:(DST)^(SRC)两个操作数相与的结果不保存,只根据其特征置条件码2*移位指令SHL(shift logical left) 逻辑左移SAL(shift arithmetic left) 算术左移SHR(shift logical right) 逻辑右移SAR(shift arithmetic right) 算术右移ROL(Rotate left) 循环左移ROR(Rotate right) 循环右移RCL(Rotate left through carry) 带进位循环左移RCR(Rotate right through carry) 带进位循环右移格式: SHL OPR,CNT(其余的类似)其中OPR可以是除立即数以外的任何寻址方式*移位次数由CNT决定,CNT可以是1或CL*循环移位指令可以改变操作数中所有位的位置;移位指令则常常用来做乘以2除以2操作*其中算术移位指令适用于带符号数运算,SAL用来乘2,SAR用来除以2;而逻辑移位指令则用来无符号数运算,SHL用来乘2,SHR用来除以2*四、串处理指令1*与REP相配合工作的MOVS,STOS和LODS指令*REP重复串操作直到(CX)=0为上格式: REP string primitive其中String Primitive可为MOVS,LODS或STOS指令执行的操作:1)如(CX)=0则退出REP,否则往下执行*2)(CX)<-(CX)-13)执行其中的串操作4)重复1)~3)*MOVS 串传送指令格式:可有三种MOVS DST,SRCMOVSB(字节)MOVSW(字)其中第二、三种格式明确地注明是传送字节或字,第一种格式则应在操作数中表明是字还是字节操作,例如:MOVS ES:BYTE PTR[DI],DS:[SI]执行的操作:1)((DI))<-((SI))2)字节操作:(SI)<-(SI)+(或-)1,(DI)<-(DI)+(或-)1当方向标志DF=0时用+,当方向标志DF=1时用-3)字操作:(SI)<-(SI)+(或-)2,(DI)<-(DI)+(或-)2当方向标志DF=0时用+,当方向标志DF=1时用-该指令不影响条件码**CLD(Clear direction flag)该指令使DF=0,在执行串操作指令时可使地址自动增量;*STD(Set direction flag)该指令使DF=1,在执行串操作指令时可使地址自动减量**STOS 存入串指令格式: STOS DSTSTOSB(字节)STOSW(字)执行的操作:字节操作:((DI))<-(AL),(DI)<-(DI)+-1字操作: ((DI))<-(AX),(DI)<-(DI)+-2该指令把AL或AX的内容存入由(DI)指定的附加段的某单元中,并根据DF的值及数据类型修改DI的内容,当它与REP联用时,可把AL或AX的内容存入一个长度为(CX)的缓冲区中* *LODS 从串取指令格式: LODS SRCLODSBLODSW执行的操作:字节操作:(AL)<-((SI)),(SI)<-(SI)+-1字操作: (AX)<-((SI)),(SI)<-(SI)+-2该指令把由(SI)指定的数据段中某单元的内容送到AL或AX中,并根据方向标志及数据类型修改SI的内容*指令允许使用段跨越前缀来指定非数据段的存储区*该指令也不影响条件码*一般说来,该指令不和REP联用*有时缓冲区中的一串字符需要逐次取出来测试时,可使用本指令*2*与REPE/REPZ和REPNZ/REPNE联合工作的CMPS和SCAS指令*REPE/REPZ 当相等/为零时重复串操作格式: REPE(或REPZ) String Primitive其中String Primitive可为CMPS或SCAS指令*执行的操作:1)如(CX)=0或ZF=0(即某次比较的结果两个操作数不等)时退出,否则往下执行2)(CX)<-(CX)-13)执行其后的串指令4)重复1)~3)*REPNE/REPNZ 当不相等/不为零时重复串操作格式: REPNE(或REPNZ) String Primitive其中String Primitive可为CMPS或SCAS指令执行的操作:除退出条件(CX=0)或ZF=1外,其他操作与REPE完全相同**CMPS 串比较指令格式: CMP SRC,DSTCMPSBCMPSW执行的操作:1)((SI))-((DI))2)字节操作:(SI)<-(SI)+-1,(DI)<-(DI)+-1字操作: (SI)<-(SI)+-2,(DI)<-(DI)+-2指令把由(SI)指向的数据段中的一个字(或字节)与由(DI)指向的附加段中的一个字(或字节)相减,但不保存结果,只根据结果设置条件码,指令的其它特性和MOVS指令的规定相同**SCAS 串扫描指令格式: SCAS DSTSCASBSCASW执行的操作:字节操作:(AL)-((DI)),(DI)<-(DI)+-1 字操作: (AL)-((DI)),(DI)<-(DI)+-2该指令把AL(或AX)的内容与由(DI)指定的在附加段中的一个字节(或字)进行比较,并不保存结果,只根据结果置条件码*指令的其他特性和MOVS的规定相同*五、控制转移指令1*无条件转移指令*JMP(jmp) 跳转指令1)段内直接短转移格式:JMP SHORT OPR执行的操作:(IP)<-(IP)+8位位移量2)段内直接近转移格式:JMP NEAR PTR OPR执行的操作:(IP)<-(IP)+16位位移量3)段内间接转移格式:JMP WORD PTR OPR执行的操作:(IP)<-(EA)4)段间直接(远)转移格式:JMP FAR PTR OPR执行的操作:(IP)<-OPR的段内偏移地址(CS)<-OPR所在段的段地址5)段间间接转移格式:JMP DWORD PTR OPR执行的操作:(IP)<-(EA)(CS)<-(EA+2)2*条件转移指令1)根据单个条件标志的设置情况转移*JZ(或JE)(Jump if zero,or equal) 结果为零(或相等)则转移格式:JE(或JZ) OPR测试条件:ZF=1*JNZ(或JNE)(Jump if not zero,or not equal) 结果不为零(或不相等)则转移格式:JNZ(或JNE) OPR测试条件:ZF=0*JS(Jump if sign) 结果为负则转移格式: JS OPR测试条件:SF=1*JNS(Jump if not sign) 结果为正则转移格式:JNS OPR测试条件:SF=0*JO(Jump if overflow) 溢出则转移格式: JO OPR测试条件:OF=1*JNO(Jump if not overflow) 不溢出则转移格式: JNO OPR测试条件:OF=0*JP(或JPE)(Jump if parity,or parity even) 奇偶位为1则转移格式: JP OPR测试条件:PF=1*JNP(或JPO)(Jump if not parity,or parity odd) 奇偶位为0则转移格式: JNP(或JPO) OPR测试条件:PF=0*JB(或JNAE,JC)(Jump if below,or not above or equal,or carry) 低于,或者不高于或等于,或进位位为1则转移格式:JB(或JNAE,JC) OPR测试条件:CF=1*JNB(或JAE,JNC)(Jump if not below,or above or equal,or not carry) 不低于,或者高于或者等于,或进位位为0则转移格式:JNB(或JAE,JNC) OPR测试条件:CF=02)比较两个无符号数,并根据比较的结果转移*JB(或JNAE,JC)格式:同上*JNB(或JAE,JNC)格式:同上*JBE(或JNA)(Jump if below or equal,or not above) 低于或等于,或不高于则转移格式:JBE(或JNA) OPR测试条件:CFVZF=1*JNBE(或JA)(Jump if not below or equal,or above) 不低于或等于,或者高于则转移格式:JNBE(或JA) OPR测试条件:CFVZF=03)比较两个带符号数,并根据比较的结果转移*JL(或LNGE)(Jump if less,or not greater or equal) 小于,或者不大于或者等于则转移格式:JL(或JNGE) OPR测试条件:SFVOF=1*JNL(或JGE)(Jump if not less,or greater or equal)不小于,或者大于或者等于则转移格式:JNL(或JGE) OPR测试条件:SFVOF=0*JLE(或JNG)(Jump if less or equal,or not greater) 小于或等于,或者不大于则转移格式:JLE(或JNG) OPR测试条件:(SFVOF)VZF=1*JNLE(或JG)(Jump if not less or equal,or greater) 不小于或等于,或者大于则转移格式:JNLE(或JG) OPR测试条件:(SFVOF)VZF=04)测试CX的值为0则转移指令*JCXZ(Jump if CX register is zero) CX寄存器的内容为零则转移格式:JCXZ OPR测试条件:(CX)=0注:条件转移全为8位短跳!3*循环指令*LOOP 循环指令格式: LOOP OPR测试条件:(CX)<>0*LOOPZ/LOOPE 当为零或相等时循环指令格式: LOOPZ(或LOOPE) OPR测试条件:(CX)<>0且ZF=1*LOOPNZ/LOOPNE 当不为零或不相等时循环指令格式: LOOPNZ(或LOOPNE) OPR测试条件:(CX)<>0且ZF=0这三条指令的步骤是:1)(CX)<-(CX)-12)检查是否满足测试条件,如满足则(IP)<-(IP)+D8的符号扩充*4*子程序*CALL调用指令*RET返回指令5*中断*INT指令格式: INT TYPE或INT执行的操作:(SP)<-(SP)-2((SP)+1,(SP))<-(PSW)(SP)<-(SP)-2((SP)+1,(SP))<-(CS)(SP)<-(SP)-2((SP)+1,(SP))<-(IP)(IP)<-(TYPE*4)(CS)<-(TYPE*4+2)*INTO 若溢出则中断执行的操作:若OF=1则:; (SP)<-(SP)-2((SP)+1,(SP))<-(PSW)(SP)<-(SP)-2((SP)+1,(SP))<-(CS)(SP)<-(SP)-2((SP)+1,(SP))<-(IP)(IP)<-(10H)(CS)<-(12H)*IRET 从中断返回指令格式: IRET执行的操作:(IP)<-((SP)+1,(SP))(SP)<-(SP)+2(CS)<-((SP)+1,(SP))(SP)<-(SP)+2(PSW)<-((SP)+1,(SP))(SP)<-(SP)+2六、处理机控制指令1*标志处理指令*CLC进位位置0指令(Clear carry)CF<-0*CMC进位位求反指令(Complement carry)CF<-CF *STC进位位置1指令(Set carry)CF<-1*CLD方向标志置0指令(Clear direction)DF<-0*STD方向标志置1指令(Set direction)DF<-1*CLI中断标志置0指令(Clear interrupt)IF<-0*STI中断标志置1指令(Set interrupt)IF<-02*其他处理机控制指令NOP(No Opreation) 无操作HLT(Halt) 停机WAIT(Wait) 等待ESC(Escape) 换码LOCK(Lock) 封锁这些指令可以控制处理机状态*这们都不影响条件码**NOP 无操作指令该指令不执行任何操作,其机器码占有一个字节,在调试程序时往往用这条指令占有一定的存储单元,以便在正式运行时用其他指令取代**HLT停机指令该指令可使机器暂停工作,使处理机处于停机状态以便等待一次外部中断到来,中断结束后可继续执行下面的程序**WAIT等待指令该指令使处理机处于空转状态,它也可以用来等待外部中断的发生,但中断结束后仍返回WAIT指令继续德行**ESC换码指令格式ESC mem其中mem指出一个存储单元,ESC指令把该存储单元的内容送到数据总线去*当然ESC指令不允许使用立即数和寄存器寻址方式*这条指令在使用协处理机(Coprocessor)执行某些操作时,可从存储器指得指令或操作数*协处理机(如8087)则是为了提高速度而可以选配的硬件**LOCK封锁指令该指令是一种前缀,它可与其他指令联合,用来维持总线的锁存信号直到与其联合的指令执行完为止*当CPU与其他处理机协同工作时,该指令可避免破坏有用信息*。
汇编语言期末复习要点
编译程序根据各变量的排列顺序和所占用的字节数,
计算出各变量的偏移量,以直接寻址方式或作中所有其他位置的该
变量符号。
8086汇编语言程序设计
18
3. 其他伪指令 ORG 、$:从哪里开始编译和编译到哪里了(偏移量) SEG、OFFSET 、TYPE: ——返回段基值、偏移量和变量类型
存器带有各种“附加”功能,这些“附加”功能是通
过机器指令的执行来实现的。
8086汇编语言程序设计
4
3. 8086/8088 CPU 的寄存器
8086/8088 CPU 的内部结构
8086汇编语言程序设计 5
三、存储器寻址方式及堆栈
1. 字节单元定位和物理地址
内存
地址 译码 逻辑 CPU 地址总线 数据总线
⑥ 基址变址寻址:xchg ax,[bx+si]
⑦ 相对基址变址寻址:push var[bx+si]
8086汇编语言程序设计 9
6. 堆栈
① 堆栈的“生成”和空栈的状态:
—— SP 的初值和堆栈容量、栈顶、栈底的关系; ② PUSH 和 POP 的行为方式: —— 栈指针 SP 的变化和数据入、出栈; ③ PUSHF 和 POPF 的默认操作数:标志寄存器;
④ 移位及循环移位类 ⑥ 标志位操作指令
② 8086 instructions
3. 掌握用 debug 学习、研究指令的方法
8086汇编语言程序设计
11
4. 特别提示:
① 目标操作数不能为立即数;
② 除了串操作指令外,双操作数不能同为存储器操作数; ③ 段寄存器只能: mov ax,ds mov ds,ax push ds pop ds
① 寄存器寻址:xor al,al
汇编语言复习重点
Ch1 汇编语言基础知识1.什么是汇编语言?2.汇编语言与机器语言的区别3.学习汇编语言的意义4.码制:不同进制、原码、反码、补码、BCD码表示,压缩BCD码Ch2 微型计算机体系结构1.8086是16位微处理器,它有16根数据线和20根地址线,寻址空间1MB。
2.8086中设置了一个6字节的指令预取队列,它的意义如何?3.8086分为EU和BIU两个部分。
说明它们的功能、作用和相互关系。
4.8086中有4个寄存器可以拆分为两个8位寄存器独立使用。
是那些寄存器?5.说明8086堆栈的特点。
指令指针寄存器IP、堆栈指针SP………6.指令对标志寄存器FLAGS的影响。
7.在8086中,当一个字存入存储器时,占有连续的两个字节空间。
存放时,低位字节存入低地址,高位字节存入高地址。
8.8086是采用存储器分段管理方式来解决寻址问题的。
即将1MB地址空间分为若干个逻辑段,段的大小按实际需要确定,最大为64KB。
9.8086对于1MB的物理存储空间,每一个存储单元都有一个20位的物理地址10.8086是采用存储器分段管理方式来解决寻址问题,指令中采用逻辑地址形式,逻辑地址表示格式为:段地址:偏移地址11.逻辑地址“段地址:偏移地址”转换为对应的物理地址的方法。
Ch3 指令系统1.在一般情况下,机器指令应包含两个部分内容,其一般格式为:操作码操作数。
2.什么是寻址方式?8086有哪些寻址方式?3.重点指令。
Ch4 伪指令与汇编语言程序结构设计1.汇编语言源程序由若干条语句组成,其语句分为两类:指令性语句和指示性语句。
2.合法的名字。
3.数据定义伪指令开始。
DB、DW、DUP等。
4.段定义Ch7 输入输出程序设计1. 接口与外设之间的信息。
2. I/O接口的功能。
3. 接口的基本组成。
4. 输入输出的控制方式的概念:无条件传送、查询式传送、中断传送。
5. 中断的基本概念、优点。
6. 什么是中断向量表、特点。
Ch8 高级汇编技术1. 什么是宏。
汇编语言复习资料
汇编语言复习资料一.名词解释(16分8道题15个里选8个)存储器:存储程序数据等信息的记忆装置,微机有ram和rom两种。
堆栈:以后进先出方式工作的存储空间。
状态标志:记录指令操作结果的标志,共6位:of,sf,zf,af,pf和cf。
段寄存器:保存各逻辑段的起始地址的寄存器,8086?8088机有4个:cs,ds,ss,es。
物理地址:唯一代表存储空间中每个字节单元地址。
汇编语言:用指令的助记符、符号地址、标号等符号书写程序的语言。
机器语言:能被计算机识别的语言。
汇编程序:把汇编语言程序翻译成机器语言程序的系统程序。
指令:告诉cpu要执行的操作(一般还要指出操作数地址),在程序运行时执行。
伪指令:由汇编程序在汇编过程中执行的指令。
Cpu:分析、控制并执行指令的部件,由算术逻辑部件alu和寄存器组成。
Ip:指示下一条要执行的指令的地址。
Sp:保存当前栈顶地址的寄存器。
控制地址:控制操作的标志,如df位。
连接程序:把若干个模块连接起来成为可执行文件的系统程序。
二.判断(10个)考点:(1)mov指令ppt中(2)第一章中n个二进制数表示的数的范围,分为有符号数和无符号数范围(3)asc码表(空格、回车、数字、字母)后面有一个程序分析题。
记ABCZabcz对应的值(4)上机debug中命令,如:—d(5)dup下面判断题必考1.MOV DS,AX ( )2.MOV CS,AX ( )3.MOV CH,4050H ( )4.MOV DL,5BH ( )5.MOV DX,5BH ( )6.MOV DX,AL ( )7.MOV V A1,V A2 ( )8.MOV 45,DL ( )三.解答题(7道){(1)段地址,偏移地址的范围注:课件上有个小例子(2)与、或、异或三个指令应用(3)栈指令实现交换[PUSH PUSH POP POP]}注意:问题问得很详细,注意不要少写答案1.书上3.8题假定(DS)=2000H,(ES)=2100H,(SS)=1500H,(SI)=00A0H,(BX)=0100H,(BP)=0010H,数据段中变量名V AL的偏移地址值为0050H,是指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1)MOV AX,0ABH 立即数寻址无物理地址(2)MOV AX,BX 寄存器寻址无物理地址(3)MOV AX,[100] 直接寻址20100H(4)MOV AX,VAL 直接寻址20050H(5) MOV AX,[BX] 寄存器间接寻址20100H(6) MOV AX,ES:[BX] 直接寻址21100H(7) MOV AX,[BP] 寄存器间接寻址20010H(8)MOV AX,[SI] 寄存器间接寻址200A0H(9) MOV AX,[BX+10] 寄存器相对寻址20110H(10)MOV AX,VAL[BX] 寄存器相对寻址20150H(11) MOV AX,[BX][SI] 基址变址寻址201A0H(12) MOV AX,VAL[BX][SI] 相对基相变址寻址201F0H2.书上3.10如TABLE为数据段中0032单元的符号名,其中存放的内容为1234H,试问以下两条指令有什么区别?指令执行完后AX寄存器的内容是什么?(1)MOV AX,TABLE 是把符号地址TABLE里的内容送到AX里,指令执行完后,(AX)=1234H(2)LEA AX,TABLE 是把符号地址TABLE 的有效地址(这里是偏移量)送到指定寄存器AX里,指令执行完后,(AX)=0032H书上3.15求出一下各十六进制数与十六进制数62A0之和,并根据结果设置标志位SF、ZF、CF和OF的值。
《汇编语言程序设计》期末复习题百度文库
《汇编语言程序设计》期末复习题百度文库第一章:汇编语言基础知识概述在开始复习《汇编语言程序设计》之前,我们先来回顾一下汇编语言的基础知识。
1.1 汇编语言的定义和作用汇编语言是一种低级语言,可以直接操作计算机硬件,并且具有较高的执行效率。
它是机器语言的可读性表示,通过一系列指令来实现计算机的基本操作。
汇编语言在计算机系统中发挥着重要的作用,特别适合于编写底层程序和对性能要求较高的应用。
1.2 汇编语言的特点与高级语言相比,汇编语言具有以下特点:- 与硬件相关:汇编语言直接操作计算机硬件,可以实现对寄存器、内存及其他硬件资源的直接访问。
- 相对繁琐:由于直接操作硬件,所以汇编指令的书写比较繁琐,需要对计算机硬件有深入的了解。
- 执行效率高:汇编语言编写的程序执行效率高,能够充分发挥计算机硬件的性能。
1.3 汇编语言的基本概念在学习汇编语言时,需要了解以下基本概念:- 寄存器:汇编语言使用寄存器来存储数据和进行计算,常用的寄存器有通用寄存器和特殊寄存器等。
- 指令:汇编语言通过一系列指令来实现计算机的基本操作,如MOV、ADD、SUB等。
- 内存:汇编语言中使用内存来存储程序和数据,在编写程序时需要合理地管理内存。
- 标志位:用于记录计算过程中的状态信息,可以用于控制程序的执行流程。
第二章:汇编语言程序设计实践2.1 环境准备在进行汇编语言程序设计之前,需要正确配置环境,并安装相应的汇编语言开发工具。
一般来说,常用的汇编语言开发工具有MASM、NASM等。
2.2 汇编语言程序的编写编写汇编语言程序需要按照特定的格式和规范进行,一般包括以下几个步骤:- 定义程序入口:使用`start`指令定义程序的入口点。
- 导入库文件:将需要调用的库文件导入到程序中。
- 定义数据段:使用`data`关键字定义数据段,存放程序中用到的数据。
- 定义代码段:使用`code`关键字定义代码段,存放程序的主体逻辑。
- 定义子程序:可以将一些常用的代码逻辑封装成子程序,便于复用。
汇编语言复习资料
汇编语言复习资料【引言】汇编语言作为计算机科学中的重要一环,是掌握计算机底层工作原理的基础。
本文将为读者提供一份汇编语言的复习资料,以帮助读者巩固对汇编语言的理解,并加深对底层计算机工作过程的认识。
【一、汇编语言基础知识】1.1 汇编语言的概念和作用汇编语言是一种低级别的计算机语言,与机器语言一一对应,用于编写和调试底层程序。
掌握汇编语言可以更加直接地操作计算机硬件资源,提高程序的执行效率。
1.2 汇编指令与机器指令汇编指令是汇编语言中最基本的单位,包括机器指令和操作数。
机器指令是计算机能够识别和执行的指令,由操作码和操作数组成。
1.3 寄存器和内存寄存器是计算机内部存储器的一种,用于存储和操作数据。
常见的寄存器包括通用寄存器、指针寄存器和标志寄存器。
内存是计算机中的主要存储器,用于存储指令和数据。
1.4 数据表示和运算汇编语言中使用不同的数据格式表示整数、浮点数和字符等数据类型,并提供相应的运算指令进行数据操作。
【二、汇编语言的程序结构】2.1 汇编语言程序的基本结构汇编语言程序包括数据段、代码段和堆栈段。
数据段用于定义和初始化数据,代码段包含程序的执行指令,堆栈段用于存储程序执行过程中的临时数据。
2.2 汇编语言程序的组织方式汇编语言程序可以使用汇编宏、过程和函数来实现模块化组织,提高代码的可读性和可维护性。
2.3 汇编语言程序的调试方法汇编语言程序的调试可以使用调试器进行单步执行、断点设置和变量查看等操作,以实时监控程序的运行状态。
【三、常用的汇编语言指令】3.1 数据定义指令数据定义指令用于定义变量和常量,并分配存储空间。
常用的数据定义指令包括DB、DW和DD等。
3.2 算术和逻辑指令算术和逻辑指令用于进行加减乘除和逻辑运算等操作。
常见的算术和逻辑指令包括ADD、SUB、MUL、DIV和AND、OR等。
3.3 分支和循环指令分支和循环指令用于根据条件进行跳转或循环执行。
常用的分支和循环指令包括JMP、JZ、JCXZ和LOOP等。
《汇编语言》复习提纲
《汇编语言》复习提纲一、引言A. 简述汇编语言的定义和作用B. 指明复习汇编语言的目的和重要性二、基础知识回顾A. 计算机体系结构基础1. CPU和内存的功能和交互2. 寄存器的种类和作用3. 指令集的概念和分类B. 汇编语言的概念和特点1. 汇编指令和机器指令的关系2. 汇编语言与高级语言的对比3. 汇编语言的优缺点三、汇编语言基本语法和结构A. 数据类型和数据存储1. 字节、字和双字等数据类型2. 内存的寻址方式3. 数据的声明和访问方法B. 汇编指令的格式和使用方法1. 指令的组成和语法2. 数据传输指令和算术指令3. 条件判断和跳转指令4. 循环和函数的实现方式四、汇编语言程序设计A. 程序设计的基本步骤1. 确定程序的功能和需求2. 设计算法和数据结构3. 编写和调试汇编程序B. 典型实例分析和解析1. 计算两个数的和与差2. 查找和排序算法的实现3. 字符串处理和IO操作的案例五、汇编语言的高级特性A. 中断和异常处理1. 中断的分类和处理2. 异常的概念和处理机制B. 内存管理和扩展1. 内存的分段和分页机制2. 内存扩展和地址映射C. 硬件接口和外设控制1. 端口和寄存器的配置和读写2. 外设控制和驱动程序的编写六、实践项目和综合应用A. 汇编语言与其他编程语言的结合1. 汇编语言与C/C++的接口2. 汇编语言在嵌入式系统中的应用B. 汇编语言程序的调试和优化1. 调试工具和技巧的应用2. 代码优化和性能提升的方法七、总结和展望A. 总结汇编语言复习的重点内容B. 展望汇编语言的发展和应用领域八、参考资料A. 书籍和文献资料B. 在线教程和学习资源以上提纲为复习《汇编语言》的参考大纲,希望能够帮助你系统地复习和理解汇编语言的基本概念、语法和应用。
在复习过程中,建议结合具体的例子和实践项目,加深对汇编语言的理解和应用能力。
祝你复习顺利,取得好成绩!。
汇编语言复习题
汇编语言期末复习题一、单项选择题1.一个有128个字的数据区,它的起始地址为12ABH:00ABH,请给出这个数据区第一个字单元的物理地址是()。
A.12B5BH B.12B6BH C.12C59H D.12BFEH2.在IN AL,PORT指令中,PORT称为()。
A.立即数B.有效地址 C.端口地址 D.寄存器名3.在下列指令的中,不能实现把AX寄存器内容清零的指令是()。
A.SUB AX,AX B.XOR AX,AXC.OR AX,0000H D.AND AX,0000H4.条件转移指令JNE的测试条件为()。
A.ZF=0B.CF=0C.ZF=1D.CF=15.8086CPU在基址加变址的寻址方式中,变址寄存器可以为()。
A.BX或CX B.CX或SIC.DX或SI D.SI或DI6.设(AX)=1000H,NEG AXNOT AX执行上述两条指令后,正确的结果是()。
A.(AX)=1001H B.(AX)=0FFFH;C.(AX)=1000H D.(AX)=0111H。
7.串指令中的目的操作数地址一定是由()提供。
A.ES:[DI]B.SS:[BP]C.DS:[SI]D.CS:[IP]8.将DX的内容除以2,正确的指令是()。
A.DIV 2 B.DIV DX,2C.SAR DX,1D.SHL DX,19.用户为了解决自己的问题,用汇编语言所编写的程序,称为()。
A.目标程序B.汇编语言源程序C.可执行程序D.汇编程序10.用一条指令仅实现将AX←BX+SI的方法是()。
A.XCHG AX,[BX][SI]B.MOV AX,[BX+SI]C.LEA AX,BX[SI]D.LEA AX,[BX][SI]11.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是()。
A.1FFFH B.1998H C.1FFEH D.2002H12.一个字为()位二进制数。
A.8位B.16位C.32位D.64位13. 下列四个寄存器中,可作为八位寄存器的是()。
汇编语言总复习
源串DS: 源串 :EA→SI/ESI 目的串ES: 目的串 :EA→DI/EDI 串长度→CX/ECX,0/1→DF 串长度 , (CX/ECX)=0? 完成一次串操作 (SI/ESI)±1(2,4)→SI/ESI ± ( ) (DI/EDI)±1(2,4)→DI/EDI ± ( ) (CX/ECX)-1→CX/ECX REP REPZ REPNZ Y 重复前缀? 重复前缀? ZF=1? ? N
80X86 汇编语言程序设计
总
复
习
总要求
掌握80X86汇编语言程序设计的基本 汇编语言程序设计的基本 掌握 理论,熟练使用宏汇编语言编写、调试 理论,熟练使用宏汇编语言编写、 分支程序、循环程序、子程序。 分支程序、循环程序、子程序。
第一章 预备知识
1. 机器语言、汇编语言、汇编源程序、汇编程序 机器语言、汇编语言、汇编源程序、 的概念。 的概念。 2. 80X86 微处理器中各寄存器的符号表示、大小 微处理器中各寄存器的符号表示、 及主要用途,三种工作方式。 及主要用途,三种工作方式。 3. 主存的编址方式、实方式物理地址的形成。 主存的编址方式、实方式物理地址的形成。 描述符的结构不用记细节) (P17-P18描述符的结构不用记细节) - 描述符的结构不用记细节 4. 堆栈及堆栈的存取操作指令。 堆栈及堆栈的存取操作指令。 5. 数值数据及字符数据在机内的表示形式。 数值数据及字符数据在机内的表示形式。 6. 标志寄存器中各标志位的含义。 标志寄存器中各标志位的含义。 SF、ZF、OF、CF、TF、IF 、 、 、 、 、
第五章 程序设计的其他方法和技术
1. 字符串操作
(1) (2) (3) (4) (5) MOVSB、MOVSW、 串传送指令 MOVSB、MOVSW、MOVSD CMPSB、CMPSW、 串比较指令 CMPSB、CMPSW、CMPSD SCASB、SCASW、 串搜索指令 SCASB、SCASW、SCASD LODSB、LODSW、 从源串中取数 LODSB、LODSW、LODSD STOSB、STOSW、 向目的串中存数 STOSB、STOSW、STOSW
汇编语言复习题(附答案)
汇编语言复习题注:蓝色标记的为答案,此答案仅供参考,大家自己做一下或看以一下,认为不对的地方,可以提出来一起讨论一下,另外看一下课后老师布置的相应作业。
在此文档最后最后附有课后四、六章的答案,大家抓紧时间复习哦!一、选择题1. 把要执行的程序与库文件连接起来形成可执行文件的系统程序是( B ) 。
A. 汇编程序B. 连接程序C. 机器语言程序D. 源代码程序2. 在8088/8086 的寄存器组中,CPU确定下一条指令的物理地址时需要用到的寄存器对是( C ) 。
A..SS 和SPB.DS 和DIC.CS 和IPD.ES 和SI3. 为了使主机访问外设方便起见,外设中的每个寄存器给予一个( C ) 。
A. 物理地址B. 逻辑地址C. 端口地址D. 段地址4. MOV AX,3064H,该指令中源操作数采用的寻址方式是( A ) 。
A. 立即B. 直接C. 寄存器相对D. 寄存器间接5. 换码指令的助记符是( C ) 。
A. XCHGB. LEASC.XLATD. MOV6. 如果A≥B(A、B有符号数)发生转移,应选择的条件转移指令是( JGE ) 。
7. 下列符号中,可用作标识符的是( C ) 。
A.MOVB.AXC.MSG1D.1ABC8. X DB 10H DUP ( 1,2)内存变量定义语句拥有了( A ) 个字节的存储空间。
A.20DB.10DC.20HD.10H9. 当DF=0时,执行串操作指令MOVS,B变址寄存器SI、DI的值将( C ) 。
A. 不变B. 减 1C. 加 1D. 无法确定10. 如下指令可将AX寄存器内容改变的是( A ) 。
A.AND AX , BX B .TEST AX , BX C.CMP AX , BX D .XCHG AX , AX11.16 位CPU支持的I/O 地址范围是( D ) 。
A.0~0FFFFFH B.0~0FFFFH C.0~0FFFH D.0~0FFH12. M UL CL 指令实现的功能是( A ) 。
汇编语言期末复习
汇编语言期末复习第一章汇编语言及其重要性一、什么是汇编语言二、汇编语言的重要性三、汇编语言的种类和本课程学习的汇编语言第二章8088微处理器及其寻址方式一、寄存器的概念二、8088的寄存器结构三、8088的存储器组织四、8088的寻址方式第三章源程序的书写格式和数据组织一、源程序书写格式二、段寄存器的装填三、程序中数据的组织第五章数据传送程序一、数据块的传送二、字符的输入/ 输出三、堆栈操作程序四、数据交换五、端口输入/ 输出六、换码程序七、其它传送指令重点例题:P.114 例6.1; P.118 例6.2;P.120 例6.3; P.125 例6.6;第六章算术运算程序一、二进制数算术运算二、十进制数算术运算重点例题:P.137 例7.1第七章逻辑运算程序一、逻辑运算指令二、逻辑运算指令应用举例重点例题:P.169 例8.1; P.175 例8.5;P.176 例8.6; P.177 例8.7第八章分支程序一、标号二、比较和转移指令三、分支程序实例重点例题:P.192 例9.2第九章字符串操作程序一、字节串、字串的概念二、字符串操作指令前可加的重复前缀三、字符串操作指令的一些共同特性四、字符串操作指令及其应用第九章循环程序设计一、迭代控制指令二、循环程序设计应用实例重点例题:P.210 例11.1; P.210 例11.2;P.218 例11.7; P.221 例11.8;第十二章过程一、过程定义及其调用二、模块间的调用和转移三、调用程序与被调用的过程之间的数据传送及程序实例重点例题:P.266 例13.4第十三章中断及中断处理一、中断的概念二、中断的分类三、中断服务程序四、中断向量表五、BIOS中断服务六、DOS中断服务七、BIOS功能调用与DOS功能调用的关系考试题型•一、选择题•二、阅读程序并回答问题•三、根据题意完善程序•四、编程题一、选择题:1、在计算机的许多应用场合,人们总是用汇编语言来编制应用程序,原因是汇编语言(1)。
汇编语言期末复习题大全(免费)
汇编语言期末复习题DX:单项选择题 DU:多项选择题 TK:填空题 MC:名词解释v JD:简答题 CXFX:程序分析题 CXTK:程序填空题 BC:编程题第1章:基础知识1、在汇编语言程序的开发过程中使用宏功能的顺序是( C )。
DXA、宏定义,宏调用B、宏定义,宏展开C、宏定义,宏调用,宏展开D、宏定义,宏展开,宏调用2、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是( B )。
DXA、名字项B、操作项C、操作数项D、注释项3、可屏蔽中断就是它的请求是否被CPU响应要受( IF )的控制。
DX4、使用LINK连接命令,执行后可生成文件的扩展名为( EXE )。
DX5、在寄存器间接寻址中,如果指令中指定的寄存器为BP,则操作数在堆栈段中,段地址在 SS 寄存器中。
TK6、注释项用于说明程序段或是一条和几条指令的功能,一般用;(或分号) 表示注释的开始。
TK7、DOS系统功能调用方式为:(1)置入口参数;(2)中断程序编号送 AH 寄存器后执行INT 21H。
TK8、通常主程序和子程序间参数传送的方法有三种:用寄存器传递、用存储单元传递、用堆栈传递(顺序可调换)。
TK9、中断是CPU暂停当前程序的执行,转而执行处理紧急事务的程序,并在该事务处理完后能自动恢复执行原先程序的过程。
在此,称引起紧急事务的事件为中断源。
TK10、在字符串操作指令中,DS∶ SI 指向源串,ES∶ DI 指向目的串。
TK11、计算机系统通过接口与外围设备通信。
TK12、键盘I/O、显示I/O和打印I/O分别对应 16H 、 10H 和 17H 号中断。
TK13、字符显示模式缓冲区中的一个字对应于屏幕上的一个字符。
每个字的第一个字节为显示字符的 ASCII码,第二个字节为显示字符的属性。
TK14、简述上机运行汇编语言程序的过程。
JD答:首先打开未来汇编,新建一个空的汇编文件,后缀为.asm,然后输入汇编程序代码,保存,再编译成机器指令,然后连接成可执行文件,即exe文件,最后再运行。
《汇编语言程序设计》复习资料
《汇编语言程序设计》复习资料一、基本概念1、8088/8086CPU内部寄存器有__14____个,其中的AX、BX、CX、DX是通用寄存器,SP、BP、DI、SI 是基址和变址寄存器,CS、DS、ES、SS、是段寄存器,此外还有指令指针寄存器 IP 和标志位寄存器 FLAGS 两个控制寄存器,所有寄存器都是 16 _位寄存器,每个寄存器可以存放 16 位二进制数。
2、8088/8086CPU的标志位寄存器中有9个标志位,其中的DF、IF、TF是控制标志,OF、SF、ZF、CF、AF、PF 是状态标志。
3、8088/8086CPU有三组总线,它们是数据总线、控制总线和地址总线;地址总线是 20 条,因此它可以寻址的范围是 1M 字节。
通常将 1024 字节称为1K,将 1024K 字节称为1M。
4、8088/8086CPU的存储器采用分段方式管理,每个段最多可以有 64K 字节,全部存储空间可以分成 16 个大小为64K且互相不重叠的段。
5、采用分段方式管理的存储单元的地址分成物理地址和逻辑地址两种,逻辑地址由段地址和偏移地址两部分构成,段地址是每个存储器段的起始地址;偏移地址则是相对于每个段第一个存储单元的偏移值。
段地址存放在段寄存器中,由于8088/8086CPU的段寄存器是16位寄存器,因此在段寄存器中存放的是段地址的 16 位;而CPU对数据的存取是按物理地址进行的,物理地址和逻辑地址间的关系是__ 物理地址=段地址 16D(或10H)+ 偏移地址___。
6、存储器中,数据是以字节为单位存放的,它是一个 8位二进制数,16位二进制数是 2个字节,又称为字;每个存储单元可以存放一个字节;一个字则占用两个存储单元,存放时要将低字节放在地址较小的存储单元中。
7、计算机的指令由操作码字段和操作数字段构成,它们分别给出计算机所要执行的操作和执行操作所要的操作数。
8、指令操作数通常可以存放在指令中,也可以存放在CPU的寄存器中,大多数存放在存储器中,它们分别称为立即数、寄存器操作数和存储器操作数。
汇编语言复习
类型:填空、选择、简答、程序阅读与填空、程序设计基础知识、指令系统、程序结构与流程、子程序、宏汇编、中断一、基础知识1、汇编的特点:面向硬件、高效率(时间、空间)2、数制:二进制、十六进制、相互转换、简单的比较大小、3、编码系统:码制,ASCII、BCD(压缩)30h-39h,41h(A),61(a),20h,0Dh,0Ah,00h(NUL)4、二进制计算:按位计算,加减、与或非异或5、CPU模型:控制器、运算器、寄存器(EU、BIU)14个寄存器:(1)Ax Bx Cx Dx (AH,AL)(2)Cs Ds Es Ss(3)SI DI SP BP(4)IP FLAGS6、内存模型:数据如何存放?内存地址如何描述?每个单元为8位(字节:00H-FFH),每个单元有一个编号,这个编号就是地址,“高高低低”原则存放数据地址描述:程序里都采用逻辑地址方式物理地址:×××××H逻辑地址:段:偏移××××H:&&&&H物理与逻辑的转换:段地址后加一个零再加上偏移地址。
X X X X 0H& & &&H7、堆栈模型堆栈:存放临时数据PUSH压栈:sp=sp-2POP出栈:sp=sp+28、寻址方式:(1)立即数(程序里)(2)寄存器(直接)(3)内存:直接寻址:[1023h], NUM寄存器间接:[BX]寄存器相对:23[bx],[bx+23]基址变址:[si][bx],[bx+si],基址:bx,bp, 变址:si,di基址变址相对:34[bx][si],[bx+si+34]二、程序相关1、指令系统:指令语句, MOV AX,BX;(1) MOV、LEA、PUSH、POP(2)ADD、ADC、INCSUB、SBB、DEC、CMPMUL、IMULDIV、IDIV(3)AND、OR、NOT、XOR、TESTSAL、SARSHL、SHRROL、RORRCL、RCR(4)转移类:CF、ZF、SFJxx :JC、JZ(JE)、JS、JNC、JNZ(JNE)、JNS 无符号:JA(Above、JB(Below)有符号:JG(Great)、JL(Little)相等加“E”,“不”加“N”无条件:JMP使用基本方式:xxx 标号循环:LOOP 标号(循环次数首先放在CX里)2、程序结构Data segmentData endsStack segmentStack endsCode segmentStart:Code endsEnd start(1)数据变量定义:X db ?,0,0Y dw 1234h,3040hBuff dw 30 dup(3,20 dup(?,?,?),5)byte ptr, word ptr3、输入与输出Int 21h : 01h 02h 09hMov ah,01hInt 21hMov xx,alMov dl,xxMov ah,02hInt 21hMov dx,xxxxhMov ah,09hInt 21h4、循环:do-while(do-until),while-do多重循环:loop, cx三、子程序、宏汇编、(1) 子程序:定义、调用Fun procpushpopret 6Fun endp子程序需要压栈与出栈;保护现场和恢复现场调用:call Fun (JMP Fun)参数传递:寄存器、内存(全局变量)、堆栈RET nPush axPush bxPush dxCall Fun(2)宏汇编定义、展开、调用Xxxx macro x,y,z54ghdfdffg;endm调用:Xxxx展开:54ghdfdffg;(3)子程序与宏汇编的区别与联系四、中断中断向量(中断服务程序的入口地址CS:IP)、中断向量表(所有中断向量按编号顺序存放在内存的最开始1024个字节里)、中断类型号(编号)、每一个中断向量占4个字节中断向量存放在中断向量表中的起始位置为4×n,其中n是中断类型号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
汇编语言考试复习范围:课本的习题:P98(习题三)6-147.什么是堆栈操作?以下关于堆栈操作的指令执行后,SP的值是多少?PUSH AXPUSH CXPUSH DXPOP AXPUSH BXPOP CXPOP DX堆栈被定义为一种先进后出的数据结构,即最后进栈的元素将被最先弹出来。
堆栈从一个称为栈底的位置开始,数据进入堆栈的操作称为压入(或压栈),数据退出堆栈的操作称为弹出,每进行一次弹出操作,堆栈就减少一个元素,最后一次压入的元素,称为栈顶元素,压入弹出操作都是对栈顶元素进行的堆栈的两种基本的操作。
在进行以上一系列堆栈操作后,SP指针的值是原SP-2。
8用汇编语言指令实现以下操作。
(1)将寄存器AX、BX和DX的内容相加,和放在寄存器DX中。
ADD AX,BXADD DX,AX(2)用基址变址寻址方式(BX和SI)实现AL寄存器的内容和存储器单元BUF中的一个字节相加的操作,和放到AL中。
ADD AL,BYTE PTR [BX][SI](3)用寄存器BX实现寄存器相对寻址方式(位移量为100H),将DX的内容和存储单元中的一个字相加,和放到存储单元中。
ADD 100H[BX],DX(4)用直接寻址方式(地址为0500H)实现将存储器中的一个字与立即数3ABCH相加,和放回该存储单元中。
MOV AX,3ABCHADD [0500H],AX(5)用串操作指令实现将内存定义好的两个字节串BUF1和BUF2相加后,存放到另一个串BUF3中的功能。
……MOV CX,COUNT cx存放count地址MOV SI,OFFSET BUF1 计算出BUF1地址存入SIMOV DI,OFFSET BUF2 计算出BUF2地址存入diMOV BX,OFFSET BUF3 计算出BUF3地址存入bxAGAIN:LODSB 是将ds:[si] 处的字节送到AL 中, si 将随DF 的设置'增1'(DF=0,使用CLD 指令设置) 或者是'减1'(DF=1,使用STD 指令设置) 而指向下一个字节ADD AL,[BX] 将地址[BX]中的数值与al相加INC BX bx加1DEC CX 计数器cx减1JNZ AGAIN cx非0则循环跳转到标号AGAIN 处继续,如果cx为0则跳出循环……9指出下列指令中,源操作数及目的操作数的寻址方式。
(1)SUB BX,[BX+35] ;寄存器寻址、寄存器相对寻址(2)MOV AX,2030H ;寄存器寻址、立即寻址(3)SCASB ;隐含操作数为寄存器寻址和寄存器间接寻址(4)IN AL,40H ;寄存器寻址、立即寻址(5)MOV [DI+BX],AX ;基址加变址寻址、寄存器寻址(6)ADD AX,50H[DI] ;寄存器寻址、寄存器相对寻址(7)MOV AL,[1300H] ;寄存器寻址、直接寻址(8)MUL BL ;寄存器寻址、目的操作数为隐含寄存器寻址10已知(DS)= 1000H,(SI)= 0200H,(BX)= 0100H,(10100H)= 11H,(10101H)= 22H,(10600H)= 33H,(10601H)= 44H,(10300H)= 55H,(10301H)= 66H,(10302H)= 77H,(10303H)= 88H,试分析下列各条指令执行完后AX寄存器的内容。
(1)MOV AX,2500H (AX)=2500H(2)MOV AX,500H[BX] (AX)==4433H(3)MOV AX,[300H] (AX)=6655H(4)MOV AX,[BX] (AX)=2211H(5)MOV AX,[BX][SI] (AX)=6655H(6)MOV AX,[BX+SI+2] (AX)=8877H11判断下列指令是否有错,如果有错,说明理由。
(1)SUB BL,BX ;两个操作数的宽度不一样(2)MOV BYTE PTR[BX],3456H ;将16位的立即数传送到一个字节的内存单元(3)SHL AX,CH ;移位指令的移位位数用CL给出,不能用CH。
(4)MOV AH,[SI][DI] ;不能用两个变址寄存器来实现寻址操作(5)SHR AX,4 ;只有当移位位数为1时,才能用立即数表达(6)MOV CS,BX ;不能对CS实现传送操作(7)MOV 125,CL ;立即数不能做目的操作数(8)MOV AX,BYTE PTR[SI] ;源操作数限定为字节,与目的操作数宽度不一致(9)MOV [DI],[SI] ;两个操作数不能同时为内存数12设(DS)= 1000H,(ES)= 2000H,(SS)= 3000H,(SI)= 0080H,(BX)= 02D0H,(BP)= 0060H,试指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?(1)MOV AX,0CBH 立即寻址(2)MOV AX,[100H] 直接寻址,物理地址为:10100H(3)MOV AX,[BX] 寄存器间接寻址,物理地址为:102D0H(4)MOV AX,[BP] 寄存器间接寻址,物理地址为:20060H(5)MOV AX,[BP+50] 寄存器相对寻址,物理地址为:200B0H(6)MOV AX,[BX][SI] 基址加变址寻址,物理地址为:10350H13分别说明下列每组指令中的两条指令的区别.(1)AND CL,0FH 按位相“与”,高4位为“0000”,低4位保留原值;OR CL,0FH 按位相“或”,高4位为原值,低4位为“1111”。
(2)MOV AX,BX 将BX寄存器的内容传送到AX寄存器中;MOV AX,[BX] 将BX寄存器所指的内存单元的内容送AX寄存器中。
(3)SUB BX,CX BX寄存器内容减去CX寄存器的内容,结果送回到BX;CMP BX,CX BX内容减去CX内容,但结果不送回,而根据标志位的情况做进一步的动作。
(4)AND AL,01H AL内容与01H相“与”,结果为“0000000x”送回AL寄存器;TEST AL,01H AL内容与01H相“与”,结果为“0000000x”不送回AL 寄存器,而根据标志位(ZF)情况做进一步的动作。
(5)JMP NEAR PTR NEXT NEXT所指指令在当前指令的同段内(16位地址范围);JMP SHORT NEXT NEXT所指指令在当前指令的8位地址范围内。
(6)ROL AX,CL 循环左移,进位标志位不参与循环;RCL AX,CL 循环左移,进位标志位参与循环。
(7)PUSH AX 将AX内容存入栈顶指针处,即进栈操作;POP AX 将栈顶内容弹出装入AX寄存器中,即出栈操作。
14试分析以下程序段执行完后BX的内容为何?MOV BX,1030HMOV CL,3SHL BX,CLDEC BX程序执行完后,BX=817FH,执行过程如下。
P124(习题四)6-116在BUF1变量中依次存储了5个字数据,接着定义了一个名为BUF2的字单元,表示如下:BUF1 DW 8765H,6CH,0,1AB5H,47EAHBUF2 DW ?(1)设BX中是BUF1的首地址,请编写指令将数据50H传送给BUF2单元。
ADD BX,10MOV WORD PTR[BX],50H(2)请编写指令将数据FFH传送给数据为0的单元。
ADD BX,4MOV WORD PTR[BX],FFH7下面是一个数据段的定义,请用图表示它们在内存中存放的形式。
DA TA SEGMENTA1 DB 25H,35H,45HA2 DB 3 DUP(5)A3 DW 200,3AB6HA4 DW 3000H,6A6FHDA TA ENDSA1A2A3A48说明下列语句所分配的存储空间及初始化的数据值。
(1)BYTE_V AR DB ‘BYTE’,21,-42H,3 DUP(0,?,2 DUP(2,3),?)(2)WORD_V AR DW 5 DUP(4,2,0),?,-8,‘BY’,‘TE’256HBYTE_V AR WORD_V AR9在下列数据传送程序段中有些使用不当的语句,请改正之。
A DB 10H,20H,‘OPQ’,4FHB DB N DUP(?);改为B DB 6 DUP(?)MOV DI,A ;改为MOV DI,OFFSET AMOV SI,B ;改为MOV SI,OFFSET BMOV CX,LENGTH A ;改为MOV CX,LENGTH BCC:MOV AX,[DI]MOV [SI],AXINC SIINC DIDEC CX ;去掉该句LOOP CC10有一个数据段定义了如下6个变量,请写出该数据段。
(1)BUF1为十进制数字节变量:64;(2)BUF2为字符串变量:‘Teacher’;(3)BUF3为十六进制数字节变量:2FH;(4)BUF4为双字变量:657AH;(5)BUF5为字变量:657AH;(6)BUF6为二进制数字节变量:10101101B。
DA TA SEGMENTBUF1 DB 64BUF2 DB ‘Teacher’BUF3 DB 2FHBUF4 DD 657AHBUF5 DW 657AHBUF6 DB 10101101B相关的习题:1.以下为用段基址:偏移量形式表示的内存地址,试计算它们的物理地址。
⑴ 12F8:0100 ⑵ 1A2F:0103 ⑶1A3F:0003 ⑷ 1A3F:A1FF(1)13080 (2)1A3F3 (3) 1A3F3 (4)245EF2. 自12FA:0000开始的内存单元中存放以下数据(用十六进制形式表示):03 06 11 A3 13 01,试分别写出12FA:0002的字节型数据、字型数据及双字型数据的值。
DB 11 DW A311 DD 0113A3113. 分别指出下列指令中源操作数和目标操作数的寻址方式。
⑴ MOV BX,12 ;寄存器寻址,立即数寻址⑵ MOV AL,128 ;寄存器寻址,立即数寻址⑶ MOV [BX],DX ;寄存器间接寻址,寄存器寻址⑷ MOV DS,AX ;寄存器寻址,寄存器寻址⑸ MOV VAR,8 ;直接寻址,立即数寻址⑹ MOV [1000H],DX ;直接寻址,寄存器寻址⑺ MOV 6[BX],CX ;寄存器相对寻址,寄存器寻址⑻ MOV AX,[BX][SI] ;寄存器寻址,基址加变址寻址⑼ MOV TAB[BP][DI],AL;基址加变址相对寻址,寄存器寻址4. 在80X86系统中,设(DS)=1000H,(ES)=2000H,(SS)=1200H,(BX)=0300H,(SI)=0200H,(BP)=0100H,VAR的偏移量为0060H,若目标操作数为存储器操作数,请计算目标操作数的物理地址是多少?⑴ MOV BX,12⑵ MOV AL,128⑶ MOV [BX],DX⑷ MOV ES:[SI],AX⑸ MOV VAR,8⑹ MOV [1000H],DX⑺ MOV 6[BX],CX⑻ MOV [BX][SI],AX⑼ MOV 6[BX][SI],AL5. 指出下指令的不同:⑴ MOV AX,3000H 与 MOV AX,[3000H]⑵ MOV AX,MEM 与 MOV AX,OFFSET MEM⑶ MOV AX,MEM 与LEA AX,MEM6. 指出下列指令的错误:⑴ MOV [AX],BX ⑵ MOV AL,1280 ⑶ MOV [BX],9 ⑷ MOV DS,1000H⑸ MOV VAR,[BX] ⑹ MOV M1,M2⑺ MOV 6,CX⑻ MOV AX,[SI][DI]⑼ MOV CS,AX ⑽ MOV BX,OFFSET VAR[SI]8. 自BUFFER单元开始连续存放着两个字型数据,编程序求它们的和,并把结果存放在这两个数据之后。