IBMPC汇编语言
- 格式:ppt
- 大小:1.23 MB
- 文档页数:28
汇编语⾔实验报告福建农林⼤学⾦⼭学院(程序设计类课程)实验报告课程名称:汇编语⾔姓名:系:专业:年级:学号:指导教师:职称:2010~2011学年第⼆学期实验项⽬列表福建农林⼤学⾦⼭学院实验报告系:专业:年级:姓名:学号:实验课程:汇编语⾔实验室号:_ _1#605 实验设备号: I3 实验时间: 2011.4.25 指导教师签字:成绩:实验⼀汇编程序的汇编及运⾏1.实验⽬的和要求(1)熟悉汇编程序的汇编、连接、执⾏过程;(2)⽣成LST⽂件,查看LST⽂件;(3)⽣成OBJ⽂件,修改语法错误;(4)⽣成EXE⽂件;(5)执⾏程序。
2.实验环境IBM—PC机及其兼容机;实验的软件环境是:操作系统:DOS 2.0以上;调试程序:/doc/aa5b4424a5e9856a56126062.html ;⽂本编程程序:EDIT.EXE、WPS.EXE;宏汇编程序:MASM.EXE(或ASM .EXE);连接装配程序:LINK .EXE;交叉引⽤程序:CREF.EXE(可有可⽆)。
3.实验内容及实验数据记录(1)将数据段输⼊,取名1.txt,保存在MASM⽂件夹下。
⽣成LST⽂件,(不必连接、运⾏)⽤EDIT查看1.LST⽂件。
试回答:DA1,DA2的偏移量分别是多少?COUNT的值为多少?DATA SEGMENTORG 20HNUM1=8NUM2=NUM1+10HDA1 DB ‘IBM PC’DA2 DB 0AH, 0DHCOUNT EQU $-DA1DATA ENDSEND(2)输⼊有错误的⽂件,修改错误语句。
(MASM没有出现错误即可。
不必连接、运⾏。
)DATA SEGMENTVAR1 DB 0, 25, ODH, 300VAR2 DB 12H, A4H, 6BHVAR3 DB ’ABCDEF’VAR4 DW 1234H, 5678HVAR5 DW 10H DUP(?)DATA ENDSCODE SEGMENTASSUME CS: CODE, DE: DATABEING MOV AX, DATAMOV DS, AXLEA SI, VAR5MOV BX, OFFSET VAR2MOV [SI], 0ABHMOV AX, VAR1+2MOV [BX], [SI]MOV VAR5+4, VAR4MOV AH, 4CHINT 21HCODE ENDSEND START(3)输⼊正确的程序,汇编、连接、运⾏STACKS SEGMENT STACKDW 128 DUP(?)STACKS ENDSDATAS SEGMENTSTRING DB ‘WELCOME!’, 13, 10, ‘$’DATAS ENDSCODES SEGMENTASSUME CS: CODES, DS: DATASSTART:MOV AX, DATASMOV DS, AXLEA DX, STRINGMOV AH, 9INT 21HMOV AH, 4CHINT 21HCODES ENDSEND START4.算法描述及实验步骤1) ⾸先,⽤记事本输⼊各段程序,并储存成源程序,保存在MASM⽬录下。
IBM-PC汇编语言指令集dfdfdfdfd数据传送指令集MOV功能: 把源操作数送给目的操作数语法: MOV 目的操作数,源操作数格式: MOV r1,r2MOV r,mMOV m,rMOV r,datadfdfdfdfXCHG功能: 交换两个操作数的数据语法: XCHG格式: XCHG r1,r2 XCHG m,r XCHG r,mkjkjkPUSH,POP功能: 把操作数压入或取出堆栈语法: PUSH 操作数 POP 操作数格式: PUSH r PUSH M PUSH data POP r POP mgfgfgfPUSHF,POPF,PUSHA,POPA功能: 堆栈指令群格式: PUSHF POPF PUSHA POPAfgfgLEA,LDS,LES功能: 取地址至寄存器语法: LEA r,m LDS r,m LES r,mfbmmkjhXLAT(XLATB)功能: 查表指令语法: XLAT XLAT m算数运算指令ADD,ADC功能: 加法指令语法: ADD OP1,OP2 ADC OP1,OP2格式: ADD r1,r2 ADD r,m ADD m,r ADD r,data影响标志: C,P,A,Z,S,OSUB,SBB功能:减法指令语法: SUB OP1,OP2 SBB OP1,OP2格式: SUB r1,r2 SUB r,m SUB m,r SUB r,data SUB m,data 影响标志: C,P,A,Z,S,OINC,DEC功能: 把OP的值加一或减一语法: INC OP DEC OP格式: INC r/m DEC r/m影响标志: P,A,Z,S,ONEG功能: 将OP的符号反相(取二进制补码)语法: NEG OP格式: NEG r/m影响标志: C,P,A,Z,S,OMUL,IMUL功能: 乘法指令语法: MUL OP IMUL OP格式: MUL r/m IMUL r/m影响标志: C,P,A,Z,S,O(仅IMUL会影响S标志)DIV,IDIV功能:除法指令语法: DIV OP IDIV OP格式: DIV r/m IDIV r/mCBW,CWD功能: 有符号数扩展指令语法: CBW CWDAAA,AAS,AAM,AAD功能: 非压BCD码运算调整指令语法: AAA AAS AAM AAD影响标志: A,C(AAA,AAS) S,Z,P(AAM,AAD)DAA,DAS功能: 压缩BCD码调整指令语法: DAA DAS影响标志: C,P,A,Z,S位运算指令集AND,OR,XOR,NOT,TEST功能: 执行BIT与BIT之间的逻辑运算语法: AND r/m,r/m/data OR r/m,r/m/data XOR r/m,r/m/data TEST r/m,r/m/data NOT r/m 影响标志: C,O,P,Z,S(其中C与O两个标志会被设为0) NOT指令不影响任何标志位SHR,SHL,SAR,SAL功能: 移位指令语法: SHR r/m,data/CL SHL r/m,data/CL SAR r/m,data/CL SAL r/m,data/CL影响标志: C,P,Z,S,OROR,ROL,RCR,RCL功能: 循环移位指令语法: ROR r/m,data/CL ROL r/m,data/CL RCR r/m,data/CL RCL r/m,data/CL影响标志: C,P,Z,S,O程序流程控制指令集CLC,STC,CMC功能: 设定进位标志语法: CLC STC CMC标志位: CCLD,STD功能: 设定方向标志语法: CLD STD标志位: DCLI,STI功能: 设定中断标志语法: CLI STI标志位: ICMP功能: 比较OP1与OP2的值语法: CMP r/m,r/m/data标志位: C,P,A,Z,OJMP功能: 跳往指定地址执行语法: JMP 地址JXX功能: 当特定条件成立则跳往指定地址执行语法: JXX 地址注:A: ABOVE,当C=0,Z=0时成立B: BELOW,当C=1时成立C: CARRY,当弁时成立 CXZ: CX寄存器的值为0(ZERO)时成立E: EQUAL,当Z=1时成立G: GREATER(大于),当Z=0且S=0时成立L: LESS(小于),当S不为零时成立N: NOT(相反条件),需和其它符号配合使用O: OVERFLOW,O=1时成立P: PARITY,P=1时成立PE: PARITY EVEN,P=1时成立PO: PARITY ODD,P=0时成立S: SIGN,S=1时成立Z: ZERO,Z=1时成立LOOP功能: 循环指令集语法: LOOP 地址LOOPE(Z)地址 LOOPNE(Z) 地址标志位: 无CALL,RET功能: 子程序调用,返回指令语法: CALL 地址 RET RET n标志位: 无INT,IRET功能: 中断调用及返回指令语法: INT n IRET标志位: 在执行INT时,CPU会自动将标志寄存器的值入栈,在执行IRET时则会将堆栈中的标志值弹回寄存器字符串操作指令集MOVSB,MOVSW,MOVSD功能: 字符串传送指令语法: MOVSB MOVSW MOVSD标志位: 无CMPSB,CMPSW,CMPSD功能: 字符串比较指令语法: CMPSB CMPSW CMPSD标志位: C,P,Z,S,OSCASB,SCASW功能: 字符串搜索指令语法: SCASB SCASW标志位: C,P,Z,S,OLODSB,LODSW,STOSB,STOSW功能: 字符串载入或存贮指令语法: LODSB LODSW STOSB STOSW标志位: 无REP,REPE,REPNE功能: 重复前缀指令集语法: REP 指令S REPE 指令S REPNE 指令S标志位: 依指令S而定对于IBM PC机它有它的指令系统,其中包括:数据传送指令、串处理指令、算术指令、控制移动指令、逻辑指令、处理机控制指令。
第3章习题答案3.1 给定(BX)=637DH,(SI)=2A9BH,位移量D=7237H,试确定在以下各种寻址方式下的有效地址是什么?(1)立即寻址;答案:无。
如:MOV AX,5(2)直接寻址;答案:7237H 如:MOV AX,[7237H](3)使用BX的寄存器寻址;答案:无。
因不涉及内存如:MOV AX,BX(4)使用BX的间接寻址;答案:637DH 如:MOV AX,[BX](5)使用BX的寄存器相对寻址答案:D5B4H 如:MOV AX,[BX+ 7237H](6)基址变址寻址答案:8E18H 如:MOV AX,[BX][SI](7)相对基址变址寻址;答案:无效,溢出如:MOV AX,[BX][SI] + 7237H 3.2 试根据以下要求,写出相应的汇编语言指令:(1)把BX寄存器和DX寄存器的内容相加,结果存入DX寄存器中;答案:ADD DX,BX(2) 用寄存器BX 和SI 的基址变址寻址方式把存储器中的一个字节与AL寄存器的内容相加,并把结果送到AL寄存器中;答案:ADD AL,[BX][SI](3) 用寄存器BX和位移量0B2H的寄存器相对寻址方式把存储器中的一个字和(CX)相加,并把结果送回到存储器中;答案:ADD [BX+0B2H],CX (4) 用位移量为0524H的直接寻址方式把存储器中的一个字与数2A59H相加,并把结果送回到该存储单元中;答案:ADD WORD PTR [0524H],2A59H (5)把数0B5H与(AL)相加,并把结果送回AL中。
答案:ADD AL, 0B5H3.3 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。
要求使用以下几种寻址方式:(1) 寄存器间接寻址答案:LEA BX, BLOCKADD BX, 5*2MOV DX, [BX](2) 寄存器相对寻址答案:LEA BX, BLOCKMOV DX, [BX+5*2](3) 基址变址寻址答案:LEA BX, BLOCKMOV SI,5*2MOV DX, [BX][SI]3.4 现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=12H,(20101)=34H,(20102)=56, (20103)=78H,(21200)=2AH,(21201)=4CH, (21202)=B7H, (21203)=65H,试说明下列各条指令执行完后AX寄存器的内容。
第五章试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。
答:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’ ;输入字符<‘a’吗JB STOPCMP AL, ‘z’ ;输入字符>‘z’吗DEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET将AX寄存器中的16位数分成4组,每组4位,然后把这四组数分别放在AL、BL、CL和DL中。
答:程序段如下:DSEG SEGMENTSTORE DB 4 DUP ()DSEG ENDS┇BEGIN: MOV CL, 4 ;右移四次MOV CH, 4 ;循环四次LEA BX, STOREA10: MOV DX, AXAND DX, 0FH ;取AX的低四位MOV [BX], DL ;低四位存入STORE中INC BXSHR AX, CL ;右移四次JNZ A10 ;循环四次完了码B10: MOV DL, STORE ;四组数分别放在AL、BL、CL和DL中MOV CL, STORE+1MOV BL, STORE+2MOV AL, STORE+3STOP: RET试编写一程序,要求比较两个字符串STRING1和STRING2所含字符是否完全相同,若相同则显示‘MATCH’,若不相同则显示‘NO MATCH’。
IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)解析————————————————————————————————作者:————————————————————————————————日期:IBM-PC汇编语言程序设计(第二版)课后习题答案(清华大学出版社)(沈美明,温冬蝉著)第二章1.解答:有256个2.解答:如下图.第一个络子为000B0H字单元,注意,是字单元,第五个格子为000B3H字单元E51E3C2A3.解答: 30022H字节单元内容: ABH 30024H字节单元内容: EFH30021H字单元内容: AB34H 30022H字单元内容: CDABH4.解答: 这三个物理地址都是3017AH,说明了不同的段地址和偏移地址对应同一物理地址5.解答: CS+IP 第一个字的物理地址为: 0AAA40H6.解答: 条件标志OF,SF,ZF,CF,的值依次为:0,0,0,07.下列操作可使用那些寄存器?(1)加法和减法AX,BX,CX,DX,当然,还有这几个通用寄存器的高低位了,如AH ,AL等(2)循环计数 CX(3)乘法和除法DX,AX,AH,AL(4)保存段地址CS ,DS,ES,SS(5)表示运算结果为O FLAGS(6)将要执行的指令地址IP(7) 将要从堆栈取出数据的地址BP,SP,SS8.可以用来指示存储器地址的寄存器有:BX,SP,BP,DI,CS,DS,SI,ES,SS,IP9.一一对应;5--A 4--B 2--C 3--D 12--E 9--F 11--G 10--H 13--I 8--J 7--K 6---L 1--M 15--N 14--O第三章1.(1)立即寻址没有(2)直接寻址7237H(3)使用BX的寄存器寻址没有(4)使用BX的间接寻址 637DH(5)使用BX的寄存器相对寻址0D5B4H(6)基址变址寻址8E18H(7)相对基址变址004FH2.根据下列要求,写出相应的汇编指令。
IBM PowerPC 汇编简介/developerworks/cn/linux/hardware/ppc/assembly/#resourcesHollis Blanchard (hollis@), 软件开发人员, IBM简介:目前汇编语言在编程领域并未广为人知,而 PowerPC 汇编更是异乎寻常的陌生。
Hollis Blanchard 从 PowerPC 的角度对汇编语言作了概述并对比了三种体系结构 ia32、ppc 和 ppc64 的示例。
标记本文!发布日期: 2004 年 3 月 09 日通常,高级语言都具有向程序员隐藏许多普通的和重复性细节这一非常好的优点,这样程序员就可以专注于他们的目标。
然而,有时程序员必须使用较低级语言,例如当编写直接处理硬件的代码或编写对性能极其敏感的代码的时候。
汇编语言是最接近硬件的编程语言,这就很自然使它成为上述那些情况下最终使用的一种语言。
本文假设您对计算机设计(例如,您应该知道处理器中有寄存器并能访问内存)和操作系统(系统调用、异常和进程堆栈)有基本了解。
本文对于不熟悉汇编的 PowerPC 程序员以及已知道 ia32 汇编并想扩展眼界的程序员都很有用。
PowerPC 简介PowerPC 体系结构规范(PowerPC Architecture Specification)发布于 1993 年,它是一个 64 位规范 ( 也包含 32 位子集 )。
几乎所有常规可用的 PowerPC(除了新型号 IBM RS/6000 和所有 IBM pSeries 高端服务器)都是 32 位的。
PowerPC 处理器有广泛的实现范围,包括从诸如 Power4 那样的高端服务器 CPU 到嵌入式CPU 市场(任天堂 Gamecube 使用了 PowerPC)。
PowerPC 处理器有非常强的嵌入式表现,因为它具有优异的性能、较低的能量损耗以及较低的散热量。
除了象串行和以太网控制器那样的集成 I/O,该嵌入式处理器与“台式机”CPU 存在非常显著的区别。
一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。
错选、多选或未选均无分。
1.下面的数值表示中,与127相等的是哪一个(D)(A)11111111B (B)127H(C)80H (D)7FH2.如果(AL)=35H,执行AND AL,0FFH指令后,CF=(A)(A)0 (B)1(C)2 (D)与执行AND AL,0指令前的取值保持一致3.如果(SP)=30H,执行PUSH BX指令后,(SP)=(B)(A)28H (B)2EH(C)32H (D)31H4.如果(AL)=01111111B,执行INC AL指令后,CF=(D)(A)1 (B)0(C)2 (D)与执行INC AL指令之前的取值保持一致5.LOOP指令隐含使用并用作循环记数器的是哪一个寄存器(A)(A)CX (B)BX (C)AL D)SI 6.在DEBUG中,T命令的功能是(C)(A)观察某内存单元的当前内容(B)连续运行被调试的程序(C)单步执行下一条指令(D)修改指定寄存器的内容7.如果当前(BL)=57H,执行指令ADD BL,0F0H后,OF标志位的取值为(B)(A)1 (B)0(C)不确定(D)及执行该指令前的取值保持一致(注:若两个操作数的符号相同,而结果的符号及之相反时OF=1,其他情况OF=0)8.如果(AL)=01100011B,(AH)=00100010B,执行ADD AL,AH指令后,正确的结果为(B )(A)(AL)=01100011B,CF=0(B)(AL)=10000101B,CF=0(C)(AL)=00100101B,CF=1(D)(AL)=10000101B,CF=19.条件转移指令的最大转移范围为(B)(A)没有转移范围的限制(B)-128到127个字节(C)-32768到32767个字节(D)0到255个字节10.如果(AL)=0DH,执行SUB AL,80H 指令后,正确的结果为哪一个(A)(A)(AL)=8DH,OF=1 (B)(AL)=0DH,OF=0(C)(AL)=8DH,OF=0 (D)(AL)=0D1H,OF=1(注:若减数大及被减数,此时有借位,CF=1;否则CF=0;若减数及被减数的符号相反,而结果的符号及减数相同,则OF=1;否则OF=0。