汇编语言程序设计复习1。二进制数,十进制数,十六进制数和BCD码数之间的转换方法。例:(129)10=()2=()16(10010111)BCD=()10=()22。真值数和补码数之间的转换方法例:字长=8位,则[-6]补=()16,若[X]补=E8H,则X的真值为()163。n位字长的有符号数、无符号数的数值范围设设机器数字长=n位,则n位补码数,其真值范围为-2n-1~+2n-1-1无符号数其数值范围为0~2n-1例:16位二进制数所能表示的无符号数范围是________。4。补码计算及并对结果进行分析,5.熟记0-9、A-F、回车符、换行符的ASCII码。第一章综合题:例1:用补码运算19-96,并判断结果是否溢出(需给出C标和O标)?解:[19-96]补=[19]补+[-96]补[19]补=00010011[-96]补=10100000[19-96]补=10110011根据[[X]补]补=[X]原:[19-96]原=11001101B所以19-96=-77C标=0,O标=0。因为O标=0,所以结果无溢出正确综合题:例2:用补码运算-66-99,并判断结果是否溢出(需给出C标和O标)?解:[-66-99]补=[-66]补+[-99]补[-66]补=10111110[-99]补=10011101[66+99]补=01011011∴-66-99=+01011011=+91C标=1O标=1,因为O标=1,所以结果溢出错误CPU存储器AB地址总线DB数据总线CB控制总线二一存储器I/O接口I/O设备例:微处理器与I/O接口及存储器进行信息传送是通过三总线来完成,该三总线为、和地址总线。第二章1。微型机的硬件结构2。存贮单元和存贮器地址.存储器由若干“存储单元”组成,每一单元存放一个“字节”的信息。.系统为每一单元编排一个地址,地址码为二进制数,习惯上写成16进制。.存储器容量由地址线“宽度”决定。例:1M容量的存储器地址范围:00000H~FFFFFH由20根地址线提供地址码。第三章1。基本结构寄存器的名称、位长和作用。(1)通用寄存器:EAX,EBX,ECX,EDX,ESI,EDI,EBP(2)段寄存器:CS,SS,DS,ES,FS,GS(3)指针寄存器:EIP,ESP(4)标志寄存器:EFLAG15位标志分为两类:状态标志和控制标志6种状态标志:CFOFZFPFAFSF例:80486CPU中的SP寄存器是一个B位的寄存器。A.8位B.16位C.24位D.32位第三章2。80486的工作模式:实地址模式和保护虚拟地址模式。80486的三个存贮地址空间:逻辑空间、线性空间和物理空间。在实模式下,486只能访问第一个1M内存(00000H~FFFFFH)逻辑空间=物理空间=1M(220)在保护模式下,486可以访问4G(232)物理存储空间(0000,0000H~FFFF,FFFFH)逻辑空间(虚拟空间)可达246=64T一.实模式的特点:①加电、复位之后,486自动工作在实模式,系统在DOS管理下②在实模式下,486只能访问第一个1M内存(00000H~FFFFFH)③存储管理部件对存储器只进行分段管理,没有分页功能,每一逻辑段的最大容量为64K。④在实模式下,段寄存器中存放段基址。第三章3。实地址模式下,物理地址的形成物理地址计算公式:物理地址=段基址*16+偏移地址在80486实地址模式下,设某存贮单元的段基址为FEFFH,偏移地址为1000H,则该存贮单元的物理地址为___FFFF0H___。第四章、第五章2。80486的寻址方式486有3类7种寻址方式立即寻址方式:获得立即数寄存器寻址方式:获得寄存器操作数存储器寻址方式:获得存储器操作数(内存操作数)1。源程序中的语句类型一个完整的源程序应包含2类语句:指令性语句(符号指令)、指示性语句(伪指令)内存寻址方式16位寻址规定可使用的寄存器(1)直接寻址(2)寄存器间接寻址[BX],[BP],[SI],[DI]段寄存器:[间址寄存器]某单元的物理地址=段寄存器内容×16+间址寄存器(3)基址寻址[BX+位移量],[BP+位移量]段寄存器:[基址寄存器+位移量]物理地址=段寄存器内容×16+基址寄存器+位移量(4)变址寻址[SI+位移量],[DI+位移量](5)基址+变址寻址[BX+SI],[BX+DI],[BP+SI],[BP+DI]例:指出下列指令源操作数的寻址方式:ADDAX,TABLE_____直接_____________MOVAX,[BX+SI+6]___基址加变址________MOVDX,[BX]________寄存器间接寻址__________MOVDX,BX_________寄存器_________MOVAL,-1________立即数__________例:设BX=1200H,SI=0002H,DS=3000H,(31200H)=50H,(31201H)=02H,(31202H)=0F7H,(31203H)=90H。请写出下列各条指令单独执行后,有关寄存器及存储单元的内容。1。DECBYTEPTR[SI+1200H]指令执行后(31202H)=__0F6___H,操作数的寻址方式为_____变址_______。2。MOVAX,WORDPTR[BX+SI]指令执行后,AX=_90F7_H,源操作数的寻址方式为___变址加基址_________。3。常用伪指令(1)数据字义伪指令DBDWDD(2)等值伪指令EQU=例:某程序中的数据定义如下:DAT1DW1234H,5678H,’AB’,’CD',’2’DAT2DB4DUP(?)DAT3DD?CNEQU$-DAT1请问CN的值是18.DAT1+5字节单元的内容是___’A’___.4。常用运算符$运算符SEG运算符OFFSET运算符PTR运算符例:数据段有:BUFDB11,22,33,44请修改下列指令MOVAX,WORDPTRBUFINCBYTEPTR[BX]★源、目操作数不可同为内存操作数★源、目操作数属性一致(长度相同)★当目标操作数为间址、变址、基址、基+变址的内存操作数,而源操作数为单字节/双字节立即数,则目标操作数必须用PTR说明类型若操作数为间、变、基、基+变的内存操作数,则必须用PTR说明类型对于单操作数指令(如:INC,DEC)对于双操作数指令(如:MOV,ADD,CMP)四五4、80486基本指令集若操作数为间、变、基、基+变的内存操作数,则必须用PTR说明类型例:下列指令中,错误的指令条数为3。INC[BX]MOVAL,[DX]MUL100MOVAX,DS:[BP]MOVBUF1,BUF2第一类、传送类2.堆栈操作指令PUSH/POP第二类、算术运算1.通用传送MOVLEA1.基本四则运算ADDADCSUBSBCMULIMULDIVIDIVINCDEC2.BCD调整DAA数据进栈、出栈过程进栈、出栈的操作数只能16或32位第四类逻辑运算1.逻辑运算NOTANDORXOR2.移位SALSARSHLSHRRCLRCRROLROR3.测试TEST第三类转移和调用指令1.无/有条件转移JMPJC/JNCJZ/JNZJS/JNSJP/JNPJO/JNO(无符号数比较)JAJNAJNCJC(有符号数比较)JGJGEJLJLE2.子程序/中断调用与返回CALL/RETINTnIRET转移和调用指令是如何改变CS和IP的值移位指令的移位次数只能是立即数或CL寄存器第五类串操作指令(REP)MOVSB(W/D)LODSB(W/D)(REP)STOSB(W/D)(REPE)/(REPNE)CMPSB(W/D)(REPE)/(REPNE)SCASB(W/D)第六类处理机控制指令CLD/STD执行指令前应做那些准备工作?串比较指令、串搜索指令执行后Z标志的含义。例:设SS=2000H,SP=2000H,AX=3000H,BX=4000H,执行PUSHAXPUSHBXMOVBX,SPPOPAX之后,SS=2000H,SP=1FFEH,AX=3000H,BX=1FFCH。例:设BUF开始的数据区中存放有10个大、小写字母,下面程序段完成的功能是什么?MOVCX,10LEABX,BUFK2:MOVAL,[BX]CMPAL,‘z’JNEK1SUBAL,20HMOV[BX],ALK1:INCBXLOOPK2答:将BUF开始的小写字母z转换成大写字母Z。例:设数据段有:DAT1DB‘ABCD’LL1EQU$-DAT1DAT2DW‘AB’,‘CD’LL2EQU$-DAT1LL3EQU$-DAT2(1)汇编后:LL1的值是4,LL2的值是8,LL3的值是____4_____。(2)执行如下程序段后,AX中的内容是4443H,BX中的内容是4344H。代码段:对DS初始化MOVAX,WORDPTRDAT1+2MOVBX,DAT2+2第六章1。EXE文件和COM文件的编程格式的区别。2。汇编语言从源程序的建立到运行可执行程序的主要步骤。3。DOS功能调用:01H,02H,09H,0AHBIOS键盘功能调用00H,01H屏幕功能调用00H,0EH4。宏指令与子程序的定义和调用格式两者之间的区别与联系。5。执行串操作指令之前的准备工作有哪些?程序设计题2.某科室9人,月收入分别为720、500、830、1200、900、750、800、1100、810。设计一个程序统计月收入在800~900间的人数,并以十进制数显示。.486datasegmentuse16bufdw720,500,830,12000,900,750,800,1100,810mesgdbnumber=,?,0dh,0ah,'$'dataendscodesegmentuse16assumecs:code,ds:databeg:movax,datamovds,axmovbx,offsetbufmovcx,9movdl,0aga:cmpwordptr[bx],800jcnextcmpwordptr[bx],900janextincdlnext:incbxincbxloopagaadddl,30hmovmesg+7,dlmovah,9movdx,offsetmesgint21hmovah,4chint21hcodeendsendbeg程序设计题3.通行字识别程序执行后,给出简单明了的操作提示PASSWORD:,请用户键入“通行字”,按回车表示通行字键入结束。只有当用户键入的字符串和程序内定的字符串相同时,程序才能返回DOS,否则请用户重新键入“通行字”。.486datasegmentuse16mesgdbPASSWORD:,'$'passdb'ABCDE'lenequ$-passbufdb10,?,10dup(?)dataendscodesegmentuse16assumecs:code,ds:data,es:databeg:movax,datamovds,axmoves,axaga:movah,9movdx,offsetmesgint21hmovah,0ahmovdx,offsetbufint21hcmpbuf+1,lenjneagamovsi,offsetpassmovdi,offsetbuf+2movcx,lencldrepecmpsbjnzagamovah,4chint21hcodeendsendbeg