汇编语言关键字

汇编语言关键字
汇编语言关键字

数据传送指令:负责把数据、地址或立即数传送到寄存器或存储单元中。

数据传送指令类型指令说明

通用数据传送指令MOV(传送)、PUSH(进栈)、POP(出栈)、XCHG(交换)

累加器专用传送指令IN(输入指令)、OUT(输入指令)

地址传送指令LEA(有效地址送寄存器)、LDS(指针送寄存器和DS)、LES(指针送寄存器和ES)

标志寄存器传送指令LAHF(标志送AH)、SAHF(AH送标志寄存器)、PUSHF(标志进栈)、POPF(标志出栈)

2)算术指令:用来执行算术运算。

算术指令类型指令说明

加法指令ADD(加法)、ADC(带进位加法)、INC(加1)

减法指令SUB(减法)、SBB(带借位减法)、DEC(减1)、NEG(求补)、CMP(比较)

乘法指令MUL(无符号数乘法)、IMUL(带符号数乘法)

除法指令DIV(无符号数除法)、IDIV(带符号数除法)、CBW(字节转换为字)、CWD(字转换为双字)

3)逻辑指令:对字或字节执行逻辑运算。

逻辑指令类型指令说明

逻辑运算指令AND(逻辑与)、OR(逻辑或)、NOT(逻辑非)、XOR(异或)、TEST(测试)

移动指令SHL(逻辑左移)、SAL(算术左移)、SHR(逻辑右移)、SAR(算术右移)、ROL(循环左移)、ROR (循环右移)、RCL(带进位循环左移)、RCR(带进位右移)

4)串处理指令:处理存放存储器里的数据串。

串处理指令类型指令说明

指令MOVS(串传送)、CMPS(串比较)、SCAS(串扫描)、LODS(从串取)、STOS(存入串)

5)控制转移指令:用来控制程序的执行流程。

控制转移指令类型指令说明

无条件转移指令JMP(段间和段内转移)

条件转移指令JZ(结果为0(或相等)则转移)、JS(结果为负则转移)、JNS(结果为正则转移)、JO(溢出则转移)、JNO(不溢出则转移)、JP(奇偶位为1则转移)、JNP(奇偶位为0则转移)

循环指令LOOP(循环指令)、LOOPPZ/LOOPE(当为0或相等时循环指令)、LOOPNZ/LOOPNE(当不为0或不相等时循环指令)

子程序指令CALL(调用指令)、RET(返回指令)

中断指令INT(中断)、INTO(如溢出则中断)、RIET(从中断返回)

6)处理机控制指令:

处理机控制指令类型指令说明

标志处理指令CLC(进位位置0指令)、CMC(进位位求反指令)、STC(进位位置为1指令)、CLD(方向标志置1指令)、STD(方向标志位置1指令)、CLI(中断标志置0指令)、STI(中断标志置1指令)

其他处理机控制指令NOP(无操作)、HLT(停机)、WAIT(等待)、ESC(换码)、LOCK(封锁)

汇编语言 快速入门

“哎哟,哥们儿,还捣鼓汇编呢?那东西没用,兄弟用VB"钓"一个API就够你忙活个十天半月的,还不一定搞出来。”此君之言倒也不虚,那吾等还有无必要研他一究呢?(废话,当然有啦!要不然你写这篇文章干嘛。)别急,别急,让我把这个中原委慢慢道来:一、所有电脑语言写出的程序运行时在内存中都以机器码方式存储,机器码可以被比较准确的翻译成汇编语言,这是因为汇编语言兼容性最好,故几乎所有跟踪、调试工具(包括WIN95/98下)都是以汇编示人的,如果阁下对CRACK颇感兴趣……;二、汇编直接与硬件打交道,如果你想搞通程序在执行时在电脑中的来龙去脉,也就是搞清电脑每个组成部分究竟在干什么、究竟怎么干?一个真正的硬件发烧友,不懂这些可不行。三、如今玩DOS的多是“高手”,如能像吾一样混入(我不是高手)“高手”内部,不仅可以从“高手”朋友那儿套些黑客级“机密”,还可以自诩“高手”尽情享受强烈的虚荣感--#$%&“醒醒!” 对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指

《汇编语言》在线作业二

请同学及时保存作业,如您在20分钟内不作操作,系统将自动退出。 《汇编语言》在线作业二 一、单选题(共 20 道试题,共 100 分。) V 1. 在多重循环程序中,每次通过外层循环进入内层循环时,其内层循环的初始条件(B )。 A. 不必考虑 B. 必须重新设置 C. 必须置1 D. 须清0 满分:5 分 2. 伪指令是(C)规定的汇编说明符,它在源程序汇编时进行说明。 A. DEBUG B. LINK C. MASM D. EDIT 满分:5 分 3. 下列描述正确的是(D)。 A. 在多重循环程序中,内层循环只能有一个 B. 在汇编语言程序设计中,二重循环程序之间的关系可以交错 C. 在汇编语言程序设计中,每次循环应返回到置初值部分之前 D. 在汇编语言程序设计中,每次循环应返回到置初值部分之后 满分:5 分 4. 下列指令会影响标志位的指令是(D)。 A. JMP L

B. JC L C. MOV AL,L D. SHL AL,1 满分:5 分 5. LINK命令执行后可以生成一个以(B)为扩展名的文件。 A. ASM B. EXE C. OBJ D. COM 满分:5 分 6. 如果0100H单元存放条件转移指令的操作码,0101H单元存放条件转移指令的相对位移量 13H,那么转移后的指令的偏移地址为(C)。 A. 0102H B. 0113H C. 0115H D. 00FEH 满分:5 分 7. 若DS=1000H,BX=2000H,(12000H)=56H,(12001H)=78H,AX=1000H,执行“ADD AX,[BX]”指令后,AX=(A)。 A. 8856H B. 6678H C. 8800H D. 6600H 满分:5 分 8. 下列叙述正确的是(A )。 A. 执行一条段间调用指令,先将CS、IP的内容压栈,然后将目的地址送CS和IP。 B. 执行一条段间调用指令,先将目的地址送CS和IP,然后将CS、IP的内容压栈。

汇编语言编写贪吃蛇游戏

DA TA SEGMENT dw 0,0 snk db 1 blk db 32 food db 3 tal1 db 4 tal2 db 2 adrs db 5 len db ? pst db ? addrs dw ? frow db ? fcol db ? hwrt db ? gmov db 'game over press r to restart press q to quit $' score1 db 'score :$' score2 db ? score0 db 1 zero db 48 writer db 'Developer: Geniusdot $' email db 'e-mail: pang@https://www.360docs.net/doc/6312384980.html,$' msg1 db 'The way to play the game:$' way db ' press w to up ,press s to down,press a to left,press d to right$' msg db 'Press any key(except a,s,d,w) to start$' DA TA ENDS STACK SEGMENT stack db 200 dup(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA,SS:STACK start: mov ax,data mov ds,ax mov ax,0 mov es,ax mov frow,10 mov fcol,6 mov dh,10 mov dl,26 mov ah,2

int 10h mov ah,9 lea dx,msg1 int 21h mov dh,11 mov dl,7 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,way int 21h mov dh,12 mov dl,20 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,msg int 21h mov ah,0 int 16h mov ah,6 mov al,0 mov ch,0 mov cl,0 mov dh,24 mov dl,79 mov bh,10 int 10h mov dh,0 mov dl,0 mov ah,2 mov bh,0 int 10h mov ah,9 lea dx,score1 int 21h mov dl,15 mov ah,2 mov bh,0 int 10h

汇编语言程序设计期末考试试卷及参考答案

【汇编语言程序设计】期末考试-试卷及参考答案

执行上述两条指令后,正确的结果是( B )。 A.(AX)=1001H; B.(AX)=0FFFH; C.(AX)=1000H; D.(AX)=0111H。 6.串指令中的目的操作数地址一定是由____A_ _提供。()A.ES:[DI] ; B.SS:[BP]; C.DS:[SI] ; D.CS:[IP]。 7.将DX的内容除以2,正确的指令是( C )。 A.DIV 2 ; B.DIV DX,2 ; C.SAR DX,1; D.SHL DX,1。 8. 用户为了解决自己的问题,用汇编语言所编写的程序,称为( B )。 A.目标程序; B.汇编语言源程序; C.可执行程序; D.汇编程序。 9.用一条指令仅实现将AX←BX+SI的方法是( D )。 A.XCHG AX,[BX][SI] ; B.MOV AX,[BX+SI]; C.LEA AX,BX[SI] ; D.LEA AX,[BX][SI]。 10.设SP初值为2000H,执行指令“PUSH AX”后,SP的值是( C )。 A.1FFFH; B.1998H; C.1FFEH; D.2002H。 2. C 二、指出下列指令的出错原因,并改正。(每小题2分,共12分) 1.MOV BX,DL;操作数类型不匹配,改正为:MOV BL,DL 或MOV BX,DX 2.MOV CS,AX;代码段寄存器CS不能作目的操作数,改正为MOV DS,AX 3.ADD AX,DS;段寄存器DS的内容不能作为加法指令的操作数,改正为 MOV BX,DS ADD AX,BX 4.TEST BX,[CX];不能使用CX实现寄存器间接寻址,改正为 MOV SI,CX TEST BX,[SI] 5.SUB [BX],[BP+SI];两个操作数不能同为存储器操作数,且两个操作数的数据类型不确定,改正为:MOV AX,[BX] SUB AX,[BP+SI] 或:MOV AL,[BX] SUB AL,[BP+SI] 6.SHL DX ;没有给出移位次数,改正为SHL DX,1或 SHL DX,CL 三、程序填空题(注意:每空只能填一条指令,并注释说明所填指令的作用!每空3分,共18分) 1.在表TABLE处存放着N个无符号字节数,求表中前10个字节数的总和并

汇编语言知识大全

第一章基础知识: 一.机器码:1.计算机只认识0,1两种状态。而机器码只能由0,1组成。故机器码相当难认,故产生了汇编语言。 2.其中汇编由三类指令形成:汇编指令(有机器码对应),伪指令,其他符号(编译的时候有用)。 每一总CPU都有自己的指令集;注意学习的侧重点。 二.存储器:1.存储单元中数据和指令没任何差别。 2.存储单元:Eg:128个储存单元(0~127)128byte。 线: 1.地址总线:寻址用,参数(宽度)为N根,则可以寻到2^N个内存单元。 据总线:传送数据用,参数为N根,一次可以传送N/8个存储单元。 3.控制总线:cpu对元器件的控制能力。越多控制力越强。 四.内存地址空间:1.由地址总线决定大小。 2.主板:cpu和核心器件(或接口卡)用地址总线,数据总线,控制总 线连接起来。 3.接口卡:由于cpu不能直接控制外设,需通过接口卡间接控制。

4.各类存储器芯片:RAM,BIOS(主板,各芯片)的ROM,接卡槽的 RAM CPU在操控他们的时候,把他们都当作内存来对待,把他们总的看作一个由 若干个存储单元组成的逻辑存储器,即我们所说的内存地址空间。 自己的一点理解:CPU对内存的操作是一样的,但是在cpu,内存,芯片之间的硬件本身所牵扯的线是不同的。所以一些地址的功能是对应一些芯片的。 第二章寄存器 引入:CPU中含有运算器,寄存器,控制器(由内部总线连接)。而寄存器是可以用来指令读写的部件。8086有14个寄存器(都是16位,2个存储空间)。 一.通用寄存器(ax,bx,cx,dx),16位,可以分为高低位 注意1.范围:16位的2^16-1,8位的2^8-1 2.进行数据传送或运算时要注意位数对应,否则会报错 二.字:1. 1个字==2个字节。 2. 在寄存器中的存储:0x高位字节低位字节;单元认定的是低单元 数制,16进制h,2进制b

汇编语言-期末考试-试题讲课教案

一、单项选择题(本大题共20小题,每小题1分,共20分)在每小题列出的四个备选项中只有一个是符合题目要求的,请将其代码填写在题后的括号内。错选、多选或未选均无分。 1.CPU要访问的某一存储单元的实际地址称() A.段地址B.偏移地址 C.物理地址D.逻辑地址 2.某存储单元的物理地址是12345H,可以作为它的段地址有() A.2345H B.12345H C.12340H D.1234H 3.执行后使BX=0的同时也使CF=0,OF=0的指令是() A.XOR BX,BX B.OR BX,BX C.AND BX,BX D.CMP BX,BX 4.循环控制指令LoopNZ/LoopNE控制循环继续执行的条件是() A.CX≠0且ZF=1B.CX≠0且ZF=0 C.CX≠0或ZF=1D.CX≠0或ZF=0 5.在执行DAA指令,当高四位BCD码校正时产生进位,如要把此进位值送入AH中,对这进位值的操作应是() A.DAA校正指令的功能已自动加在AH中 B.进位值在AF中,校正后根据AF内容再加在AH中 C.进位值在CF中,校正后根据CF内容再加在AH中 D.进位值在AL最高位上,校正后根据AL最高位内容再加在AH中 6.AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是() A.指令XOR AX,AX执行后,AX内容不变,但设置了标志位 B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0 C.指令AND AX,OFH执行后,分离出AL低四位 D.NOT AX,执行后,将AX清0 7.在执行下列指令时,需要使用段寄存器DS的指令是() A.STOSW B.ADD AL,CL C.NEG BX D.INC DA[BX] 8.无论BH中原有的数是奇数或偶数,若要使BH中的数一定为奇数,应执行的指令是()A.ADD BH,01H B.OR BH,01H C.XOR BH,01H D.TEST BH,01H 9.完成对CL寄存器的内容乘以4的正确操作是() A.ROL CL,1B.MUL4 ROL CL,1 C.SHL CL,1D.MOV CL,2 SHL CL,1SHL CL,CL 10.下面各传送指令中,正确的是() A.MOV[DI],[SI]B.MOV[DX+DI],AL C.MOV WORD PTR[BX],0100H D.MOV AL,BX 11.汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法() A.名字的第一个字符可以是大写英文字母及小写英文字母 B.名字的第一个字符可以是字母、数字及、@、_ C.名字的有效长度≤31个字符 D.在名字中不允许出现$

《汇编语言程序设计》在线测试

《汇编语言程序设计》第01章在线测试 《汇编语言程序设计》第01章在线测试剩余时间:59:54 答题须知:1、本卷满分20分。 2、答完题后,请一定要单击下面的“交卷”按钮交卷,否则无法记录本试卷的成绩。 3、在交卷之前,不要刷新本网页,否则你的答题结果将会被清空。 第一题、单项选择题(每题1分,5道题共5分) 1、一个字节的二进制位数是____位。 A、4 B、8 C、16 D、32 2、微机中每个存储单元具有一个地址,其中存放一个____量。 A、比特(1位) B、字节(8位) C、字(16位) D、双字(32位) 3、设段地址为5788H,偏移地址为94H,该字节的物理地址_____。 A、57974H B、5883H C、58ECH D、57914H 4、汇编语言源程序中,每个语句由4项组成,不影响语句功能的是_____。 A、名字项 B、助记符(操作码) C、操作数 D、注释 5、执行INT 21H指令后,8086CPU将转入_____号中断服务程序。 A、20 B、20H C、21 D、21H 第二题、多项选择题(每题2分,5道题共10分) 1、如下________名称属于8086的16位通用寄存器。 A、IP B、DS C、BP D、DX E、AX 2、采用汇编语言进行程序开发,可以使用的工具软件有______。 A、文本编辑程序 B、汇编程序 C、调试程序 D、集成化开发环境 E、连接程序 3、使用MASM 6.x版本的“ML /Fl eg101.asm”命令,如果源程序eg101.asm没有语法错误,则将生成_________文件。 A、目标代码文件

最新有答案---14-15-1-汇编语言复习资料

汇编语言复习资料 第一部分选择题 第一章基础知识 1.数组array在数据段的定义如下所示,在内存空间的存储值是什么,选出正确的一 项(B ) array db 1,‘1’,0AH,‘A’,-2 A、1H 1H 0AH 0AH 82h B、1H 31H 0AH 41H FEH C、1 1 0A 0A 12h D、31H 31H 41H 41H 02h 2.debug命令中显示内存单元内容的命令是( B ) A、a B、d C、e D、r 3.debug命令中反汇编命令是(D ) A、q B、g C、t D、u 4.在DEBUG下,修改寄存器AX的命令是___B_。 A.U AX B.R AX C.R D.A AX 5.从200H开始反汇编的DEBUG命令是A____。 A.U 200 B.R 200 C.D 200 D.U 6.仅查看用户程序中数据段10号存储单元的DEBUG命令是A____。 A.D DS:A A B.D DS:A C.D DS:10 10 D.D DS:10 7.计算机编程语言的发展顺序是(A ) A、机器语言汇编语言高级语言 B、汇编语言机器语言高级语言 C、高级语言汇编语言机器语言 D、高级语言机器语言汇编语言 8.将124转换成十六进制数的结果是_A____。 A.7CH B.7DH C.7EH D.7BH 9.计算机对字符、符号采用统一的二进制编码。其编码采用的是_C_____。 A.BCD码B.二进制码C.ASCII D.十六进制码 第二章80x86计算机组织 10.对汇编语言源程序进行翻译的程序是__B___。 A.连接程序B.汇编程序C.编译程序D.目标程序 11.在汇编语言中,能够翻译成二进制代码的指令是__A__。 A.汇编指令B.伪指令C.机器指令D.宏指令

《汇编语言程序设计》期末复习题答案_57431457509182192

《汇编语言程序设计》复习题(答案指导/带页号)一、选择(30题) 1.下列是8位带符号二进制数的补码,其中最大的是( B )。参见P22 A、10001000 B、00000001 C、00000000 D、11111111 2.在一段汇编语言程序中多次调用另一段程序,用宏指令比用子程序实现 ( C )参见P157、158 A、占内存空间小,但速度慢 B、占内存空间相同,速度快 C、占内存空间大,但速度快 D、占内存空间相同,速度慢 3.数据定义为:EE DB 3,4 CC DW 3456H,6789H 执行指令“MOV CX,WORD PTR EE+1”后,(CX)= ( B )参见P27、63、64 A、0304H B、5604H C、3404H D、3456H 4.有如下指令序列: MOV AL,95H MOV CL,2 SAR AL,CL 上述指令序列执行后,AL的内容是( D )参见P95 A、05H B、25H C、24H D、0E5H 5.设A=18610,B=2738,C=0BB16,把这三个数看成无符号数,则它们之间的关系是( D )参见P23、15 A、A>B>C B、 A

汇编语言程序设计第一二三阶段在线作业

第一次在线作业)单选题 (共40道题 2.51.(分)8086CPU在基址变址的寻址方式中,变址寄存器可以为:?CX或、BX A?SI B、CX或?SI C、DX或?DI D、SI或我的答案:D 此题得分:2.5分的源操作数的位置是:,,则指令SI=1234H MOV AX,[BX+SI+2]2.52.(分)已知BX=2000H?的字节、数据段中偏移量为3236H A?的字节、附加段中偏移量为3234H B?的字节、数据段中偏移量为3234H C?的字节D、附加段中偏移量为3236H我的答案:分A 此题得分:2.5IP(2.5分)在程序执行过程中,寄存器中始终保存的是: 3.?、上一条指令的首地址A?、下一条指令的首地址B ?、正在执行指令的首地址C ?、需计算有效地址后才能确定地址D我的答案:2.5分B 此题得分:,那32K16分)位二进制)是某系列微机对存储器的分段,如果每一个段最多的字存储单元(2.54.(么表示段内字节单元偏移地址的二进制位数应是:?位20 A、?位16 B、?位C、15 ?位12 D、我的答案:B 此题得分:2.5分(2.5分)可用作寄存器间接寻址或基址、变址寻址的地址寄存器,正确的是:5.?DXCX,AX A、,BX,?SS,CSB、DS,ES, ?BXBP,IP,,C、SP?BXBP,,D、SIDI,我的答案:分D 此题得分: 2.5 . . . . 顺序存放在连续两个字存储单元中,可选用Ⅱ码两个字符的ASC41H,42H分)6.(2.5 要求将A,B的语句是:?‘AB'B A、DA1 D ?‘AB'DW B、DA1 ?ABHB C、DA1 ?ABHW D、DA1 我的答案:2.5分A 此题得分:下面语句中有语法错误的语句是:7.(2.5分)?5HDB A、?ABCDHB、DW ?‘ABCD'C、DW ?‘AB'、DDD 我的答案:分2.5C 此题得分:(2.5分)寄存器间接寻址方式中,操作数存放在:8.?、通用寄存器A?、堆栈B?、程序计数器C?、主存单元D 我的答案: D 此题得分:2.5分 2.5(分)操作数地址存放在寄存器的寻址方式称为:9.?、变址寻址A ?、寄存器寻址B?、相对寻址C?、寄存器间接寻址D我的答案:此题得分:2.5分D 操作数的物理地址是:BYTE PTR[DI](10.2.5分)设DI=3942HDS=8225H,,指令NEG ?85B92H、A?86192H、B?BB690H C、?12169H、D我的答案:2.5分A 此题得分:下列寄存器组中在段内寻址时可以提供偏移地址的寄存器组是:分)(2.5 11.?DX,BXCX,,、 AAX . . . . ?DI,SI,、BBX,BP?DXBP,,C、SP,IP ?SSES,、DCS,DS, 我的答案:2.5分B 此题得分:分配的存,10H),3BUF5) 上述语句汇编后,为变量12.10H (2.5分)BUF DW DUP(3 ,DUP(2储单元字节数是:?80HA、 ?100HB、 ?124C 、?192、D我的答案:此题得分:2.5B 分13.发出的访问存储器的地址是:(2.5分)CPU?、物理地址A?、偏移地址B?、逻辑地址C?、段地址D我的答案:分A 此题得分:2.5]指令中的操作数的数据类型是:BYTE DEC PTR[BX14.(2.5分) ?、字A?、双字B?、字节C?、四字D我的答案:C 分此题得分:2.5BUFFER称为:,0AH 中,15.(2.5分)在语句BUFFER DB 01H?、符号A?、变量B?、助记符C?、标号D我的答案:B 此题得分:2.5分将数据5618H存放在存储单元中的伪指令是:16.(2.5分)?1856HDATA1 DW A、

汇编语言实现文本编辑器

汇编语言课程设计 题目文本方式下字处理程序的设计与实现 学院计算机科学与技术学院 专业计算机科学与技术 班级计算机科学与技术0705 课程设计任务书 题目: 文本方式下字处理程序的设计与实现 初始条件: 理论:完成了《汇编语言程序设计》课程,对微机系统结构和80系列指令系统有了较深入的理解,已掌握了汇编语言程序设计的基本方法和技巧。 实践:完成了《汇编语言程序设计》的4个实验,熟悉了汇编语言程序的设计环境并掌握了汇编语言程序的调试方法。 要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等 具体要求) 理解键盘和显示器接口的工作原理,掌握BIOS键盘和显示器中断调用的使用方法,掌握复杂内存数据结构的定义和管理方法。具体的设计任务及要求: 1)清晰且易于操作的用户界面;动态显示光标的当前位置; 2)在文本编辑区接受并保存输入信息; 3)光标上移,下移,左移,右移; 4)允许删除当前光标前的字符; 5)将编辑文本存盘,读出并显示硬盘中的指定文件。(任选) 在完成设计任务后,按要求撰写课程设计说明书;对课程设计说明书的具体要求请见课程设计指导书。 阅读资料:

1)《IBM—PC汇编语言程序设计实验教程》3.3节 2)《IBM—PC汇编语言程序设计(第2版)》9.1节 时间安排: 设计安排一周:周1、周2:完成系统分析及设计。 周3、周4:完成程序调试,和验收。 周5:撰写课程设计报告。 指导教师签名:年月日 系主任(或责任教师)签名:年月日 一、系统描述 1、目的 (1)掌握计算机汇编语言的使用。学完汇编课程,理解和掌握键盘和显示器接口的工作原理,掌握BIOS键盘和显示器中断调用的使用方法,掌握复杂内存数据结构 的定义和管理方法。 (2)通过设计、编制、调试一个文本方式下字处理程序。实现一个简单的文本编辑器的基本功能 2、设计内容 1)清晰且易于操作的用户界面; 2)动态显示光标的当前位置; 3)在文本编辑区可以输入字符信息; 4)光标上移,下移,左移,右移,还可以回车,使用home键、end键退格键; 5)允许删除当前光标前的字符; 6)将编辑文本存盘,读出并显示硬盘中的指定文件。 3、开发平台 所使用的系统:Windows XP 程序开发工具:Masn for Windows 6.0 集成实验开发环境 序设计语言:IBM-PC 汇编语言 二、文本编辑译系统的概要设计 文本编辑程序要实现简单的文本编辑器基本功能。 1.设计一个友好,易于操作的界面,界面可仿照windows记事本,但windows记事本 的菜单项不好制作,所以将主要功能说明制作到边框,方便使用即可。并且实现在

汇编语言第一章答案

1.1 用降幂法和除法将下列十进制数转换为二进制数和十六进制数: (1) 369 (2) 10000 (3) 4095 (4) 32767 答:(1) 369=1 0111 0001B=171H (2) 10000=10 0111 0001 0000B=2710H (3) 4095=1111 1111 1111B=FFFH (4) 32767=111 1111 1111 1111B=7FFFH 1.2 将下列二进制数转换为十六进制数和十进制数: (1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 1111 答:(1) 10 1101B=2DH=45 (2) 1000 0000B=80H=128 (3) 1111 1111 1111 1111B=FFFFH=65535 (4) 1111 1111B=FFH=255 1.3 将下列十六进制数转换为二进制数和十进制数: (1) FA (2) 5B (3) FFFE (4) 1234 答:(1) FAH=1111 1010B=250 (2) 5BH=101 1011B=91 (3) FFFEH=1111 1111 1111 1110B=65534 (4) 1234H=1 0010 0011 0100B=4660 1.4 完成下列十六进制数的运算,并转换为十进制数进行校核: (1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F 答:(1) 3A+B7H=F1H=241 (2) 1234+AFH=12E3H=4835 (3) ABCD-FEH=AACFH=43727 (4) 7AB×6FH=35325H=217893 1.5 下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。 (1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6) -85-(-76) 答:(1) (-85)+76=1010 1011B+0100 1100B=1111 0111B=0F7H;CF=0;OF=0 (2) 85+(-76)=0101 0101B+1011 0100B=0000 1001B=09H;CF=1;OF=0 (3) 85-76=0101 0101B-0100 1100B=0101 0101B+1011 0100B=0000 1001B=09H;CF=0;OF=0 (4) 85-(-76)=0101 0101B-1011 0100B=0101 0101B+0100 1100B=10100001B=0A1H;CF=0;OF=1 (5) (-85)-76=1010 1011B-0100 1100B=1010 1011B+1011 0100B=0101 1111B=5FH;CF=0;OF=1 (6) -85-(-76)=1010 1011B-1011 0100B=1010 1011B+0100 1100B=11110111B=0F7H;CF=0;OF=0 1.6 下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么? (1) D8 (2) FF 答:(1) D8H表示的带符号数为-40,D8H表示的无符号数为216; (2) FFH表示的带符号数为-1,FFH表示的无符号数为255。 1.7 下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么? (1) 4F (2) 2B (3) 73 (4) 59

汇编语言期末试卷复习(附答案)上课讲义

选择题 1. 已知X=78,Y= -83则[X+Y]补=() A.0F5H B.0A1H C.0FBH D.65H 2. MOV AX, ES:COUNT[DI] 源操作数的寻址方式是() A.基址寻址 B.立即寻址 C.变址寻址 D.基址变址寻址 3. 指令MOV BX, MASK[BP],若MASK=3500H,SS=1200H,DS=1000H,BP=1000H,那么物理地址为() A.17500H B.16500H C.14500H D.13500H 4. 下列四组寄存器中,在段内寻址时可以提供偏移地址的寄存器组是() A.AX,BX,CX,DX B.BP,SP,IP,CS C.BX,BP,SI,DI D.BH,BL,CH,CL 5. 当执行指令ADD AX,BX后,若AX的内容为2BA0H,设置的奇偶标志位PF=1,下面的叙述正确的是() A. 表示结果中含1的个数为偶数 B. 表示结果中含1的个数为奇数 C. 表示该数为偶数 D. 表示结果中低八位含1的个数为偶数 6. 下列传送指令中,有语法错误的指令是()。 A.MOV CS,AX B.MOV DS,AX C.MOV ES,AX D.MOV SS,AX 7. MOV SP,3210H PUSH AX执行上述指令序理后,SP寄存器的值是()。 A.3211H B. 320EH C.320FH D. 3212H 8. 设(DH)=20H,执行NEG DH指令后,正确的结果是() A.(DH)=20H CF=1 B.(DH)=20H CF=0 C.(DH)=0E0H CF=0 D.(DH)=0E0H CF=1 9. 执行下面指令序列后,结果是() MOV AL,82H CBW A.AX=0FF82H B.AX=8082H C.AX=0082H D.AX=0F82H

汇编语言-在线第1周3

汇编语言程序设计 MASM开发软件

Windows操作系统平台 MASM 6.15汇编程序硬件BIOS 应用程序 *.ASM, *.OBJ *.LST, *.EXE 操作系统 编辑程序,汇编程序 连接程序,调试程序

汇编程序将汇编语言源程序转换为机器代码 微软宏汇编程序MASM ?MASM 6.11是最后一个独立发行的MASM 软件包?MASM 6.15来自Visual C++6.0 (支持到Pentium 4的SSE2 指令系统)汇编语言程序与汇编程序 是两个不同的概念 汇编语言程序与汇编程序是两个不同的概念

基本开发软件环境(取自MASM 6.11和Visual C++ 6.0)?MASM主目录:本书I/O库、包含文件及批处理文件 ?BIN子目录:进行汇编、连接及配套程序文件 ?HELP子目录:MASM 6.11帮助文件 ?WINDBG子目录:Windows调试程序 ?PROGS子目录:示例程序或用户程序 建议安装到D分区的MASM目录

MASM 6.15汇编程序 ?ml.exe主程序文件 ?ml.err错误信息文件 连接程序(Linker) ?link16.exe16位DOS连接程序 ?link32.exe32位Windows连接程序 子程序库管理程序 ?lib16.exe16位DOS库管理程序 ?lib32.exe 32位Windows库管理程序

应用于32位Windows平台的文件 ?eg0000.asm源程序模板文件 ?io32.inc32位包含文件 ?io32.lib32位I/O子程序库文件 ?make32.bat32位应用程序快速创建文件?WIN32.bat快速进入32位控制台文件 ?windbg 调试程序的快捷方式

汇编语言实现冒泡排序(一)

;用汇编语言实现实现冒泡排序,并将排序后的数输出 DATAS SEGMENT A dw 100,344,3435,43433,3438,343,134,80,8,1000,65535,54,45 N=$-A ;计算数字所占的字节数 DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START:MOV AX,DATAS MOV DS,AX MOV SI,0 ;SI遍历数字;前一个数的地址 MOV CX,N/2-1 ;设置循环次数,M(M=N/2)个数需要,循环M-1次 CALL BUBBLE ;调用BUBBLE将原来的数排序 ;输出排序后的数 MOV CX,N/2 ;循环M次输出排序后的M个数 MOV SI,0 ;SI遍历排序后的数 MOV DI,0 ;用DI记录数字的位数 MOV BP,N+5 ;BP用于遍历存储的转化后的字符的位置 SHOW: PUSH CX ;循环次数入栈 MOV DX,0 ;由于将要进行16位除需要置高16位为0 MOV AX,[SI] ;低16位为排序后的数 CALL DTOC ;调用DTOC将十进制数转换为字符串 CALL SHOW_STR ;调用SHOW_STR将一个数转化得到的字符串输出ADD SI,2 ;下一个数 POP CX ;循环次数出栈栈 LOOP SHOW MOV AH,4CH INT 21H ;冒泡排序 BUBBLE PROC L1: PUSH CX ;将循环次数入栈 LEA SI,A ;SI遍历DATAS数据段的数字 L2: MOV AX,A[SI] ;将前一个数存于AX CMP AX,A[SI+2] ;比较前后两个数 JBE NEXT ;如果前一个数小于或等于后一个数则继续本轮的比较XCHG AX,A[SI+2] ;否则,交换前后两个数的位置 MOV A[SI],AX NEXT:ADD SI,2 ;下一个数 LOOP L2 ;注意内层循环的次数已经确定了 POP CX ;将循环次数出栈 LOOP L1 ;下一轮比较 RET BUBBLE ENDP

汇编语言第一章预备知识

第一章预备知识 汇编语言是面向机器的低级语言: 和其他计算机语言相比,能够充分利用计算机硬件特性;随机器的不同而不同。 学习汇编语言必须做到: 了解特定机器的硬件;了解其数据类型的表示方法;了解其指令系统等。 本章的内容包括: 什么是汇编语言; 汇编源程序举例; 汇编和调试过程; 寄存器组 1.1 机器语言与汇编语言 人们用计算机语言操纵计算机,和计算机交流信息。一般来说,计算机语言可以分为以下几类: 低级语言是面向机器的,为特定机器提出的; 高级语言是面相人的,接近于自然语言,为了方便人们使用提

出的。 一、 机器语言 机器指令:能够被计算机识别,并能直接加以执行的语句。 机器语言:由机器指令构成的集合。 机器指令也叫做硬指令,不同类型的CPU 都有自己特有的、一定数量的基本指令,组成其特有的机器语言。 机器指令用二进制代码来表示,这样才能够被计算机识别并直接执行。 机器指令的一般形式为:例如:

完成操作:MOV AX, 7FH; 7FH →AX 操作码指出了运算的种类,如数据传送、加减运算等。地址码指出了参与运算的操作数和运算结果的存放位置。 用机器语言编程,就意味着要用二进制数0和1编写程序。这样做效率很低,而且容易出错。但为了能够充分利用硬件特性,在一些时候仍然需要用低级语言编程,因此人们想办法对机器语言进行改进,提出了汇编语言。此后很少直接使用机器语言了。 二、 汇编语言 从本质上看,汇编语言是一种符号化的机器语言: 用助记符表示机器指令的操作码; 用变量代替操作数的存放地址; 用在语句前加一个标号,来代表该指令的存放地址。 汇编语言的主要操作与机器指令一一对应,是一种用符号书写的(不再是二进制代码)、并遵循一定语法规则的计算机语言。例如: 1011 1000 0111 1111 0000 0000 操作码:1011,MOV 目的操作数:1000,AX 源操作数:0000 0000 0111 1111,立即数

汇编语言入门教程

汇编语言入门教程 2007-04-29 22:04对初学者而言,汇编的许多命令太复杂,往往学习很长时间也写不出一个漂漂亮亮的程序,以致妨碍了我们学习汇编的兴趣,不少人就此放弃。所以我个人看法学汇编,不一定要写程序,写程序确实不是汇编的强项,大家不妨玩玩DEBUG,有时CRACK 出一个小软件比完成一个程序更有成就感(就像学电脑先玩游戏一样)。某些高深的指令事实上只对有经验的汇编程序员有用,对我们而言,太过高深了。为了使学习汇编语言有个好的开始,你必须要先排除那些华丽复杂的命令,将注意力集中在最重要的几个指令上(CMP LOOP MOV JNZ……)。但是想在啰里吧嗦的教科书中完成上述目标,谈何容易,所以本人整理了这篇超浓缩(用WINZIP、WINRAR…依次压迫,嘿嘿!)教程。大言不惭的说,看通本文,你完全可以“不经意”间在前辈或是后生卖弄一下DEBUG,很有成就感的,试试看!那么――这个接下来呢?――Here we go!(阅读时看不懂不要紧,下文必有分解) 因为汇编是通过CPU和内存跟硬件对话的,所以我们不得不先了解一下CPU和内存:(关于数的进制问题在此不提) CPU是可以执行电脑所有算术╱逻辑运算与基本I/O 控制功能的一块芯片。一种汇编语言只能用于特定的CPU。也就是说,不同的CPU其汇编语言的指令语法亦不相同。个人电脑由1981年推出至今,其CPU发展过程为:8086→80286→80386→80486→PENTIUM →……,还有AMD、CYRIX等旁支。后面兼容前面CPU的功能,只不过多了些指令(如多能奔腾的MMX指令集)、增大了寄存器(如386的32位EAX)、增多了寄存器(如486的FS)。为确保汇编程序可以适用于各种机型,所以推荐使用8086汇编语言,其兼容性最佳。本文所提均为8086汇编语言。寄存器(Register)是CPU内部的元件,所以在寄存器之间的数据传送非常快。用途:1.可将寄存器内的数据执行算术及逻辑运算。2.存于寄存器内的地址可用来指向内存的某个位置,即寻址。3.可以用来读写数据到电脑的周边设备。8086 有8个8位数据寄存器,这些8位寄存器可分别组成16位寄存器:AH&AL=AX:累加寄存器,常用于运算;BH&BL=BX:基址寄存器,常用于地址索引;CH&CL=CX:计数寄存器,常用于计数;DH&DL=DX:数据寄存器,常用于数据传递。为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器;DS(Data Segment):数据段寄存器;SS(Stack Segment):堆栈段寄存器;ES(Extra Segment):附加段寄存器。当一个程序要执行时,就要决定程序代码、数据和堆栈各要用到内存的哪些位置,通过设定段寄存器CS,DS,SS 来指向这些起始位置。通常是将DS固定,而根据需要修改CS。所以,程序可以在可寻址空间小于64K的情况下被写成任意大小。所以,程序和其数据组合起来的大小,限制在DS 所指的64K内,这就是COM文件不得大于64K的原因。8086以内存做为战场,用寄存器做为军事基地,以加速工作。除了前面所提的寄存器外,还有一些特殊功能的寄存器:IP(Intruction Pointer):指令指针寄存器,与CS配合使用,可跟踪程序的执行过程;SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置。BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置;SI(Source Index):源变址寄存器可用来存放相对于DS 段之源变址指针;DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。还有一个标志寄存器FR(Flag Register),有九个有意义的标志,将在下文用到时详细说明。

如何编写和汇编语言程序

如何编写和汇编语言程序 可以用普通文本编辑器编辑汇编语言源程序。常用的有 MS-DOS 下的 EDIT 文本编辑程序, Windows 下的写字板( WORDPAD.EXE )等。用户通过屏幕编辑程序键入源程序,检查无误,可将源程序存到汇编系统盘上,该程序的扩展名为· ASM 。 软件运行基本环境 运行汇编程序必备的软件环境: DOS 操作系统;汇编系统。 汇编系统盘应包含如下文件: MASM 宏汇编程序文件 LISK 连接程序文件 CRFF 索引程序文件(也可不用) 汇编源程序编写 1 )源程序的书写格式 当 CPU 访问内存时,是把存储器分成若干个段,通过 4 个段寄存器中存放的地址对内存储器访问,因此在编源程序时必须按段的结构来编制程序。由于每个段的物理空间为≤ 64KB ,所以程序中各段可以分别为一个或几个。源程序的书写一般有如下形式: 逻辑堆栈段堆栈段名 SEGMENT STACK 用变量定义预置的堆栈空间 · · 堆栈段名 ENDS 逻辑数据段数据段名 SEGMENT 用变量定义预置的数据空间 · · 数据段名 ENDS 逻辑代码段代码段名 SEGMENT ASSUME 定义各段寻址关系 过程名 PROC … 程序 · · 过程名 ENDP 代码段名 ENDS END 过程名或起始标号 在源程序中最少要有一个代码段,数据段根据需要可有可无,也可以增设附加段。对于堆栈段也可以根据需要可有可无,但在连接( LINK )时计算机将显示警告性的错误: Warning : N STACK segment There was 1 error detected. 在程序中如果没有用到堆栈时,该错误提示不影响程序的运行,如果程序中用到堆栈时必须设置堆栈段。 其中: SEGMENT 、 ASSUME 、 PROC … ENDP 为伪指令,伪指令是发给汇编程序 ASM 的,而不和微处理器打交道,在汇编时不产生目标代码,只是把源程序中各段的设置情况告诉汇编程序。 2 )段寄存器的段地址的装入 Assume 伪指令语句只是建立了当前段与段寄存器的联系,但不能把各段的段地址装入相应的段寄存器中,段寄存器的段地址的装入是在程序中完成的。 ( 1 ) DS 、 ES 、 SS 的装入 由于段寄存器不能用立即数寻址方式直接传送,所以段地址装入可通过通用寄存器传送给段寄存器。 MOV AX ,逻辑段名 MOV 段寄存器, AX

相关文档
最新文档