汇编语言程序设计复习题.

上传人:今*** 文档编号:105688334 上传时间:2019-10-13 格式:DOC 页数:8 大小:67KB
返回 下载 相关 举报
汇编语言程序设计复习题._第1页
第1页 / 共8页
汇编语言程序设计复习题._第2页
第2页 / 共8页
汇编语言程序设计复习题._第3页
第3页 / 共8页
汇编语言程序设计复习题._第4页
第4页 / 共8页
汇编语言程序设计复习题._第5页
第5页 / 共8页
点击查看更多>>
资源描述

《汇编语言程序设计复习题.》由会员分享,可在线阅读,更多相关《汇编语言程序设计复习题.(8页珍藏版)》请在金锄头文库上搜索。

1、第1章 基础知识1、2、8、10、16进制,以及各进制之间的转换 例:(369)10=(101110001)2=(561)8=(171)162、原码、补码,即表示范围 例:(60)10=(3C)原=(3C)补 (-60)10=(BC)原=(C4)补 16进制数98H,表示无符号数(152),带符号数(-104)数值上加起来是256 8位无符号数表示范围:0(00H)255(FFH),有符号数:-128(80H)+127(7FH) 16位无符号数:0(00H)65535(FFFFH),有符号数-32768(8000H)+32767(7FFFH)3、 补码的加、减法计算(可参考后面ADD、ADC指

2、令)4、 与、或、非运算(可参考后面AND、OR、NOT指令)5、常用的ASCII码(数字048,即30H;大写字母A65,即41H,小写字母a97,即61H) 大小写字母转换:加/减32,即20H例1:将以存储器内BUF指定的字符串(的小写字母全部改成大写字母,是大写字母的不修改。()解:LEA BX, BUFMOV AL, BXCMP AL, aJBEXITCMP AL, zJAEXITSUB AL, 32例2:由键盘输入的小写字母全部改成大写字母输出显示解:MOV AH, 01H;从键盘接收数据,一号调用INT 21H SUB AL,32MOV DL, ALMOV AH, 02HINT

3、21H第2章 8x86计算机组织1、 汇编语言源程序.asm文件经过MASM的编译形成.obj的目标文件,后经LINK的连接形成.exe的可执行文件DEBUG调试。2、8086的字长16位、地址线20位,最大寻址范围1M(2的20次方);但20位地址分成两个部分16位段地址+16位段内偏移。3、8086的寄存器组(重点) 3.1通用寄存器:AX、BX、CX、DX(其每个都能分成两个单独的8位寄存器) AX累加器,乘法的被乘数,除法中的被除数,I/O操作 BX基址 CX循环计数,与LOOP等指令联用 DX与AX联用,乘积高位、被除数高位 SI、DI存放地址数据,一般和DS联用,但在串指令中,源串

4、地址由SI指定,与DS联用,目的串地址由DI指定,与ES联用。 3.2 专用寄存器 IP指令指针,存放下一条指令地址,与CS联用,系统修改,用户程序不能修改 SP栈顶指针,与SS联用(只能做16bit运算) PSW(FLAGS)程序状态字(1真0假):CF、OF、SF、ZF、DF(方向位)、TF(陷阱位)、IF(中断位)各位含义? 特别注意CF和OF的区别,无符号数溢出可以用CF来判断,有符号溢出要用OF来判断 3.3 段寄存器:CS、DS、ES、SS3、存储器地址 逻辑地址(相对地址)、物理地址(绝对地址) 物理地址 = 段地址*16 + 偏移地址 内存是8位编址,存放数据时高位数据在高地址

5、,低位数据在低地址 例1:BUF DW 1234H,5678H,画出其在内存中存放1234HHH34H (2000H)12H78H56H (2003H) 例2:设SP=2000H,AX=1234H,BX=5678H,CX=9ABCH,在PUSH AX ;sp从栈顶向下压,指针做减2操作PUSH BXPUSH CXPOP AX 后SP=(?=1FFCH),AX=(?=9ABCH),画出其存放示意图BC (1FFAH)SP9A (1FFBH)78 (1FFCH)56 (1FFDH)34(1FFEH)12 (1FFFH)第3章 8x86的指令系统和寻址方式(重点)1、 指令的格式:操作码 操作数2、

6、寻址方式(非常重要) 2.1 立即数寻址 MOV AL,5 2.2 寄存器(直接)寻址 MOV AX,BX 2.3 直接寻址:MOV AX,【2000H】或MOV AX,X (变量或数据直接给出存储器地址) 有效地址EA:2000H,物理地址PA:16*段首+EA 段首一般指向DS,若MOV AX,ES:2000H,段首由前缀ES指定 2.4 寄存器间接寻址 MOV AX,【BX】(BX中存放内存地址,如2000H) 简接地址由BX、BP、SI、DI指定。 EA=寄存器内值,PA=16*段首+EA 注意:寄存器的默认连接段,BX、SI、DI默认DS,BP默认SS 有段前缀的则有段前缀指定,如M

7、OV AX,ES:【BX】 2.5 寄存器相对寻址(基地址BX/BP+指定位移量) MOV AX,【BX+100H】或MOV AX,100H【BX】 EA:(BX)+100H,PA:16*段首+EA 2.6基址变址寻址(基址BX/BP+变址SI/DI) MOV AX,【BX+SI】或MOV AX,【BX】【SI】 EA:(BX)+(SI),PA:16*段首+EA(由基址寄存器指定段首) 2.7相对基址变址寻址(基址BX/BP+变址SI/DI+位移量) MOV AX,【BX+SI+100H】 MOV AX,MASK【BX+SI】 EA:(BX)+(SI)+位移(100H或MASK)PA:16*段

8、首+EA(由基址寄存器指定段首)例如:DX=1000H,BX=1000H,SI=1234H,则指令MOVAX,BX+SI+2的源操作数在( 12236H )中。3、8x86指令系统(非常重要)3.1 数据传送指令 3.1.1 MOV 传送放向(重要)MOV 1000H,MASK(必须有个寄存器)MOV DS,DATA(DS不能做目的)MOV CS,AX(CS不可更改)MOV AL,BX(长度不匹配)MOV 2,AX (立即数不能做目的)以上指令都非法 例:用MOV指令编写程序段,在BUF为首址的26个字节单元中依次存放字母az解:LEA BX,BUFMOV CX, 26MOV AL, a L1

9、: MOV BX, ALINC BXINC ALLOOP L1 3.1.2 PUSU、POP PUSH:SP减1,高8数据入;SP减1,低8位数据入 例如:PUSH AX, 1、SP-1,AH入,2、SP-1,AL入 POP:低8数据出,SP+1;高8数据出,SP+1 例如:POP AX, 1、SP下数据进AL,SP+1;2、SP下数据进AH,SP+1 例: 设SP初值为2080H,执行指令POP BX后,SP的值是? 2082H 3.1.3 XCHG 交换 3.1.4 XLAT 换码(重要) 表由DS:BX指定,AL是表内偏移;换码后的结果进入AL 例如:DATA SEGMENT TABLE

10、 DB 5,7,3,8,2,1,9,0,4,6 DATA ENDS 设 AL=2 MOV AX,DATA MOV DS,AX LEA BX,TABLE;或MOV BX,OFFSET TABLE XLAT ;(换码结果AL=3) 例:接收从键盘输入的10个十进制数字,输入回车符则停止,这些数字加密后(用XLAT指令变换)存 入内存缓冲区BUF。写出完整的数据段和代码段定义,变换中使用的加密表如上。解: DATA SEGMENT TABLE DB 5,7,3,8,2,1,9,0,4,6BUF DB 10 DUP(?) DATA ENDS CODE SEGEMENTASSUME CS:CODE, D

11、S, DATA START:MOV AX, DATAMOV DS, AXLEA BX, TABLELEA SI, BUFMOV CX, 10 L1: MOV AH, 01H;获取键盘输入INT 21HCMP AL, 0DH;回车符?JZ EXITXLATMOV SI, ALINC SILOOP L1EXIT: MOV AL, 4CHINT 21H CODE ENDSENDS START 3.1.5 LEA求有效地址,等效于 MOV OFFSET 3.1.6 CBW、CWD (符号位赋值扩位) 8AL-16位AX,16位AX-32位(DX,AX),符号位复制的方法扩位 例如,AL=36H,则扩位

12、后AX=(0036H);或AL=88H,则扩位后AX=(FF88H)3.2 算术指令 3.2.1 加法指令ADD、ADC、INC,注意其对标志位的影响 例如:书61页,例3.45 3.2.2 减法指令 SUB、SBB、DEC,CMP,NEG。标志位影响 例如:书63页,例3.48例:设AL=24H,SI=0600H,DS=3000H,(30600H)=0B0H,CF=1。执行SBBAL,SI后,AL、SF、CF、ZF、OF等结果是?注意:CMP指令两个操作数减后设标志位,但不保留减法结果AL = 24H - 0B0H - 1 = 73H (0111 0011)SF = 0 (2进制首位)CF

13、= 1;借位ZF = 0OF = 0例1:三个数中AX,BX,CX,(无符号)编写指令将最大数放在AX中解:CMP AX, BXJB N1CMP AX, CXJBN1:XCHG AX, BX3.3.3乘法指令 MUL(无符号乘),IMUL(有符号乘); 被乘数在AL/AX,另一个乘数在指令中。乘积长度扩一倍 例如8位乘法 MUL BL ; AL*BL-AX 16位乘法 MUL BX,AX*BX-DX,AX 设AL=02H,BL=0F6H,执行IMUL BL结果是?3.3.4 除法指令 DIV(无符号除),IDIV(无符号除) 被除数位数是除数的2倍,被除数由DX,AX或AX指定,商在低位,余数在高位 8位除法:DIV BL,AX/BL 商在AL,余数在AH 16位除法(DX,AX)/BX 商在AX,余数在DX例1:设X、Y、Z、W为16位有符号数编程计算:W(X*Y+Z)/4)-Y。写出完成的数据段和代码段定义,设X=98H,Y=76H,Z=54H。(10分)P

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号