汇编打字练习1
- 格式:doc
- 大小:150.50 KB
- 文档页数:23
习题一1.在计算机内部,计算机能够直接执行的程序语言是。
A.汇编语言 B。
C++语言C.机器语言 D。
高级语言2.在堆栈段中,存放栈顶地址的寄存器是。
A.IP B.SP C. BX D. BP3.指令指针寄存器IP用来存放代码段中的偏移地址。
在程序运行的过程中,它始终指向。
A.下一条指令的首地址B.下一条指令的地址C.当前指令的首地址D.当前指令的地址4.编译程序的功能是。
A.检查源程序中的语法错误和逻辑错误B.将源程序编译成目标程序C.改正源程序中的语法错误D.将高级语言源程序翻译成汇编语言源程序5.用户为了解决自己的问题,用汇编语言所编写的程序,称为。
A.目标程序B.源程序C.可执行程序D.汇编程序6.计算机中用来存储程序、数据等信息的记忆装置是。
A.控制器B.运算器C.CPUD.存储器7.在宏汇编中,源程序必须通过___________生成目标代码,然后用连接程序将其转化为可执行文件, 该文件可在系统中运行。
8 当 SS =3000H,SP =0100H 时,执行 PUSH AX 指令后,堆栈顶部的物理地址是()A.30100H B.30098H C.30102H D.300FEH9 设10000010B分别以原码、补码及反码表示时,则对应的十进制数依次是()A.-82、-126、-2 B.-2、-125、126C.-2、-126、-125 D.-82、-125、12510 标志寄存器中属于控制标志位的是()A. DF,OF,SFB. DF,IF,TFC. OF,CF,PFD. AF,OF,SF11 设(AX)=4544H,在执行指令”SUB AH,AL”之后,()A.CF=0,OF=0 B.CF=0,OF=1C.CF=1,OF=0 D.CF=1,OF=112 若寄存器AX、BX、CX、DX的内容分别为18,19,20,21时,依次执行PUSH AX,PUSH BX,POP CX,POP DX后,寄存器CX的内容为__________________。
4.2习题1.写出完成下列要求的变量定义语句:(1)在变量var1中保存6个字变量:4512H,4512,-1,100/3,10H,65530;(2)在变量var2中保存字符串:’BYTE’, ’word’, ’WORD’;(3)在缓冲区buf1中留出100个字节的存储空间;(4)在缓冲区buf2中,保存5个字节的55H,再保存10个字节的240,并将这一过程重复7次;(5)在变量var3中保存缓冲区buf1的长度;(6)在变量pointer中保存变量var1和缓冲区buf1的偏移地址。
2.设变量var1的逻辑地址为0100:0000,画出下列语句定义的变量的存储分配图: var1 DB 12,-12,20/6,4 DUP(0,55H)var2 DB ‘Assemble’var3 DW ‘AB’, ‘cd’, ‘E’var4 DW var2var5 DD var23.指令正误判断,对正确指令写出源和目的操作数的寻址方式,对错误指令指出原因(设VAR1, VAR2为字变量, L1为标号):(1)MOV SI,100 (2)MOV BX,VAR1[SI](3)MOV AX, [BX] (4)MOV AL, [DX](5)MOV BP, AL (6)MOV VAR1, VAR2(7)MOV CS, AX (8)MOV DS, 0100H(9)MOV [BX][SI], 1 (10)MOV AX, VAR1+VAR2(11)ADD AX, LENGTH VAR1 (12)OR BL, TYPE VAR2(13)SUB [DI], 78H (14)MOVS VAR1, VAR2(15)PUSH 100H (16)POP CS(17)XCHG AX, ES (18)MOV DS, CS(19)JMP L1+5 (20)DIV AX, 10(21)SHL BL, 2 (22)MOV AL, 15+23(23)MUL CX (24)XCHG CL, [SI](25)ADC CS:[0100], AH (26)SBB VAR1-5,1544.说明下列指令对的区别:(1)MOV AX,VAR1 与 MOV AX,OFFSET VAR1(2)MOV AX,VAR2 与 LEA AX,VAR2(3)MOV AL,LENGTH VAR1 与 MOV AL,SIZE VAR1(4)MOV AL,ES: [DI] CMP AL, [SI]与 CMPSB(5)SHR AL,1 与 SAR AL,1(6)SHR AL,1 与 ROR AL,1(7)ROL BX,1 与 RCL BX,15.写出下列转移指令的寻址方式(设L1为标号,VAR1为字型变量,DVAR1为双字型变量):(1)JMP L1 (2)JMP NEAR L1(3)JNZ L1 (4)JMP BX(5)JG L1 (6)JMP VAR1[SI](7)JMP FAR PTR L1 (8)JMP DVAR16.设(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100)=3412H,(20102)=7856H,(21200)=4C2AH,(21202)=65B7H,求下列指令执行后AX寄存器的内容:(1)MOV AX,1200H;(2)MOV AX,BX;(3)MOV AX, [1200H];(4)MOV AX, [BX]; (5)MOV AX,1100[BX];(6)MOV AX, [BX][SI];(7)MOV AX,1100[BX][SI]7.执行下列指令后,DX寄存器中的内容是多少?TABLE DW 25,36,-1,-16,10000,13PYL DW 7……MOV BX,OFFSET TABLEADD BX,PYLMOV DX,[BX]8.如果堆栈的起始地址为2200:0000,栈底为0100H,(SP)=00A8H,求(1)栈顶地址;(2)SS的内容;(3)再存入数据5678H,3AF2H后,SP的内容。
练习一1、简述计算机系统的构成。
2、试述汇编语言的特点。
3、将下列十进制数转换为二进制数和十六进制数。
(1)369 (2)10000 (3)4095 (4)327674、将下列二进制数转换为十六进制数和十进制数。
(1)101101 (2)10000000 (3)1111111111111111 (4)11111111 5、将下列十六进制数转换为二进制数和十进制数。
(1)FA(2)5B (3)FFFE (4)12346、试分别判断下列各组数据中哪个数据最大?哪个最小?(1)A=0.101B B=0.101D C=0.101H(2)A=1011B B=1011D C=1011H7、将下列十进制数转换为BCD码。
(1)12 (2)24 (3)68 (4)127(5)128 (6)255 (7)1234 (8)24588、将下列BCD码转换为十进制数。
(1)1001,0001 (2)1000,1001 (3)0011,0110 (4)1001,0000(5)0000,1000 (6)1001,0111, (7)1000,0001 (8)0000,000109、请写出下列字符串的ASCII码值。
For example,This is a number 3692.10、下列各数为用十六进制表示的8位二进制数,它们所表示的十进制数及被看作字符的ASCII码时的字符是什么?(1)4F (2)2B (3)73 (4)5911、下列各数为十六进制表示的8位二进制数,说明当它们分别被看作是无符号数或用补码表示的带符号数时,所表示的十进制数是什么?(1)D8 (2)FF12、现有一个二进制数10110110,若将该数分别看作是无符号数,原码表示的带符号数,补码表示的带符号数,它对应的十进制数的真值分别是多少?13、将下列十进制数分别用8位二进制数的原码、反码和补码表示。
(1)0(2)-127 (3)127 (4)-57(5)126 (6)-126 (7)6814、计算机中有一个"0110,0001"编码,如果把它认为是无符号数,它是十进制的什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?15、完成下列无符号二进制数的运算。
填空1、已有AX=E896H,BX=3976H,若执行ADD BX,AX指令,则结果BX,AX,标志位CF,OF,ZF各为何值?2、源程序如下:MOV CL,4MOV AX,[2000H]SHL AL,CLSHR AX,CLMOV [2000H],AX试问:若程序执行前,数据段内(2000H)=09H,(2001H)=03H, 则执行后有(2000H)=_____,(2001H)=______。
3、源程序如下:(4分)MOV AL,0B7HAND AL,0DDHXOR AL,81HOR AL,33HJP LAB1JMP LAB2试问: 执行程序后AL=_______;程序将转到哪一个地址执行:__________。
4、源程序如下:(6分)MOV CX,9MOV AL,01HMOV SI,1000HNEXT:MOV [SI],ALINC SISHL AL,1LOOP NEXT试问:执行本程序后有:AL=_____;SI=______;CX=______;选择1、判断下列指令的对错(正确的在括号内打“√”,错的打“⨯”) (5分)(1) LEA SI, 4[SI] ( )(2) MOV AL, [CX] ( )(3) XCHG [SI], [BX] ( )(4) PUSH WORD PTR[BX] ( )(5) POP CS ( )2、将累加器AX的内容清零的不正确操作是()。
A. AND AX,0B. XOR AX,AXC. SUB AX,AXD. CMP AX,AX3、设SS=2010H,SP=0086H,BX=6521H,当执行PUSH BX指令后,6521H在堆栈内的实际地址是()。
A. (20186H)=21H (20185H)=65HB. (20186H)=65H (20187H)=21HC. (20185H)=21H (20184H)=65HD. (20185H)=65H (20184H)=21H4、执行PUSH AX指令后,堆栈指针SP的内容()A.减1B. 减2C. 加1D. 加25、下面对PUSH指令描述正确的是()。
一、选择题1. CPU发出的访问存储器的地址是()。
A. 物理地址B. 偏移地址C. 逻辑地址D. 段地址2. 要实现使BETA的值为56,应采用语句为()。
A. BETA DB 56B. BETA DB 56HC. BETA EQU 56D. BETA EQU 56H3. CPU要访问的某一存储单元的实际地址称()。
A. 段地址B. 偏移地址C. 物理地址D. 逻辑地址4. 在执行下列指令时,需要使用段寄存器DS的指令是()。
A. STOSWB. ADD AL, CLC. NEG BXD. INC [BX]5. 下面各传送指令中,正确的是()。
A. MOV [DI], [SI]B. MOV [DX+DI], ALC. MOV WORD PTR [BX], 0100HD. MOV AL, BXX6.表示过程定义结束的伪指令是()。
A.ENDPB.ENDSC.ENDD.ENDM7. 将高级语言的程序翻译成机器语言的实用程序是()。
A. 编译程序B. 汇编程序C. 解释程序D. 目标程序8. 存储器分段,每个段不超过()。
A.64K 个字B.32K 个字节C.1 兆个字节D.64K 个字节9. 无论BH中原有的数是奇数或是偶数,若要使BH中的数一定为奇数,应执行的指令是()。
A. ADD BH, 01HB. OR BH, 01HC. XOR BH, 01HD. TEST BH,01H10. INC BYTE PTR[BX] 指令中的操作数的数据类型是()。
A. 字B. 双字C. 字节D. 四字11. 物理地址(10FF0H )=10H,(10FF1H )=20H,(10FF2H )=30H,从地址10FF1H 中取一个字的内容是()。
A.1020HB.3020HC.2030HD.2010H12. 使用DOS系统功能调用时,使用的软中断指令是()。
A. INT 21B. INT 10HC. INT 16HD. INT 21H13. 在下列语句中,BUFFER称为()。
汇编语言练习题一、基础知识类1. 列出汇编语言中的寄存器及其用途。
2. 解释汇编语言中的指令格式。
3. 什么是标志寄存器?它有哪些常用的标志位?4. 描述汇编程序的基本结构。
5. 如何在汇编语言中进行数据定义?二、数据传送类1. 将AX寄存器的值传送到BX寄存器。
2. 将内存单元[1000H]的值传送到CX寄存器。
3. 将数据段中的一个字节传送到AL寄存器。
4. 实现两个内存单元之间的数据交换。
5. 将一个字的数据传送到DX和AX寄存器。
三、算术运算类1. 计算H + 5678H,并将结果存储在AX寄存器中。
2. 计算H 5678H,并将结果存储在AX寄存器中。
3. 实现16位无符号数的乘法运算。
4. 实现16位无符号数的除法运算。
5. 使用汇编语言实现一个简单的加法计算器。
四、逻辑运算类1. 对AX寄存器的值进行按位取反操作。
2. 计算H和5678H的逻辑与运算结果。
3. 计算H和5678H的逻辑或运算结果。
4. 计算H和5678H的逻辑异或运算结果。
5. 实现一个简单的逻辑表达式求值程序。
五、控制转移类1. 实现一个无条件跳转指令。
2. 根据CX寄存器的值,实现一个循环结构。
3. 使用比较指令和跳转指令实现一个简单的排序算法。
4. 编写一个程序,判断一个数是否为素数。
5. 实现一个多分支选择结构。
六、字符串操作类1. 实现将一个字符串复制到另一个内存区域。
2. 实现字符串的逆序排列。
3. 计算一个字符串的长度。
4. 比较两个字符串是否相等。
5. 在一个字符串中查找某个字符的位置。
七、中断及系统调用类1. 编写一个简单的中断处理程序。
2. 使用INT 21H中断实现屏幕输出一个字符串。
3. 使用INT 21H中断读取键盘输入的字符串。
4. 编写一个程序,实现定时器中断。
5. 使用汇编语言实现系统调用,完成文件读写操作。
八、子程序设计类1. 编写一个子程序,用于计算两个数的最大公约数。
2. 实现一个子程序,能够将十进制数转换为十六进制数。
AREA TEST1,CODE,READONL Y ;声明代码段TEST1ENTRY ;标识程序入口CODE32 ;声明32位ARM指令;立即寻址MOV R0,#0X01 ;对R0赋值ADD R0,R0,#01 ;R0=R0+0x01ADD R0,R0,#0X2a ;R0=R0+0x2aEND练习二:寄存器寻址AREA TEST1,CODE,READONL Y ;声明代码段TEST1ENTRY ;标识程序入口CODE32 ;声明32位ARM指令;寄存器寻址START MOV R0,#0X02MOV R1,#0X03MOV R2,#0X04ADD R0,R1,R2END练习三:寄存器移位寻址AREA TEST1,CODE,READONL Y ;声明代码段TEST1ENTRY ;标识程序入口CODE32 ;声明32位ARM指令;寄存器移位寻址STARTMOV R0,#2MOV R1,#2MOV R2,#2MOV R3,#2MOV R0,R2,LSL #3ADDS R0,R1,R2,LSL #R3B STARTEND练习四:寄存器间接寻址AREA TEST1,CODE,READONL Y ;声明代码段TEST1ENTRY ;标识程序入口CODE32 ;声明32位ARM指令;寄存器间接寻址START MOV R0,#3MOV R0,R0,LSL #3LDR R1,[R0]SWP R1,R1,[R0]B STARTENDAREA TEST1,CODE,READONL Y ;声明代码段TEST1ENTRY ;标识程序入口CODE32 ;声明32位ARM指令;基址变址寻址STARTMOV R0,#0X00MOV R3,#0X03MOV R4,#0X04MOV R5,#0X05MOV R10,#0X10LDMIA R0!,{R1-R3,R12}MOV R1,#0X10STMIA R1!,{R3-R5,R10}B STARTEND练习六:堆栈寻址AREA TEST1,CODE,READONL YENTRYCODE32START MOV R0,#0X01MOV R1,#0X02MOV R2,#0X03MOV R3,#0X04MOV R4,#0X05MOV LR,#0X06MOV SP,#0X20STMFD SP!,{R0-R4,LR}LDMFD SP!,{R0-R4,LR}B STARTEND练习七汇编加法练习AREA TEST1,CODE,READONL YENTRYCODE32START MOV R0,#05MOV R1,#09LOOP BL ADD_SUBB LOOPADD_SUB ADDS R0,R0,R1MOV PC,LREND。
汇编程序设计打字游戏. 24docx计算机与信息工程学院《汇编语言》课程设计打字游戏的设计专业:计算机科学与技术班级:控制11-2姓名:蔡磊学号:24指导教师:郝维来2013年6月28日AbstractWith the continuous development of the computer updates, a significant role in all areas of application. Assembly language is presented to the user computer can use the fastest and the best language in the world. Microcomputer principle and interface technology as the basic knowledge of computer science, in spite of the high speed development of computer science, but the basic principles remain the same, learning and mastering the microcomputer principle and interface technology that knowledge is very important, through the understanding of the knowledge can be simple to write some classical control procedures in daily life.This course is designed to design a keyboard typing games, through the assembly language programming to achieve through the keyboard to control the end of the game start, pause, etc. Should not only have strong theoretical knowledge as foreshadowing, must also have the ability of integrating theory with practice. In terms of programming, invoking macros, use BIOS and DOS interrupt function, and debugging. Need to have confidence and patience to overcome the difficulty.目录I.正文1.背景分析及意义 (1)2.总体设计思想 (1)3.完成主要功能 (1)4.软件环境要求 (2)5.程序流程图 (2)6.使用说明 (5)II.设计总结 (8)III.参考文献 (8)IV.程序清单 (9)1.背景分析及意义随着计算机的不断更新发展,计算机在各个领域的应用越来越多,更多的软件开发人员和相关技术人员在程序设计的过程中应用汇编程序或编制汇编语言。
汇编语言程序设计报告 1 目录
1 概述:.............................................................................................................................................. 1 1.1 基本功能: ............................................................................................................................. 2 1.2 拓展功能 ................................................................................................................................. 3 1.3 其他功能 ................................................................................................................................. 3
2 详细设计说明 .................................................................................................................................. 3 2.1 原“TYPETEST.ASM”程序结构 .............................................................................................. 4 2.2 已经实现的功能(修改的、新编写的)程序结构 .............................................................. 5
3 对该“打字练习程序”的进一步设想 ........................................................................................ 10 3.1 ...................................................................................................................................................... 10 3.2 ...................................................................................................................................................... 11 3.3 ...................................................................................................................................................... 11
4 课程设计总结 ................................................................................................................................ 11 5 软件使用说明 ................................................................................................................................ 12 6 附录(参考文献,原代码:) ...................................................................................................... 12 参考文献: ........................................................................................................................................ 12 原代码 ................................................................................................................................................ 12 汇编语言程序设计报告
1 1 概述: 编写一个程序,执行程序后,出现主界面,按回车键出现由26个字母组成的乱序行,这时其中任一字母落下,在键盘上敲入该字母,如果输入正确,字母消失;按回车键进入打字练习;按ESC键返回主界面;按空格键暂停;按‘E’退出。 因此程序要包含以下几个模块:菜单显示模块、字母显示模块、字母下落模块、暂停处理模块、退出返回模块等。 汇编语言程序设计报告
2 1.1 基本功能:
2 认真阅读“typetest.asm”源程序, 理解程序每一条指令在程序中的作用。绘制程序流程图(简略总图,各模块详细流程图),给程序中的关键语句(后跟分号)作注释。
3 设置输入界面, 用户输入密码后才能进入主菜单 ;
4 修改主菜单, 在主菜单上显示当天日期 ;
5 修改主菜单, 增加可供用户选择难度级别的选项。
6 为用户打分,正确输入字母使用时间越少,得分越高。
7 修改程序, 在屏幕右上角显示用户得分、已输入字母数、正确数。 汇编语言程序设计报告 3 将程序中的“置光标位置”程序段落用宏调用完成, 添加“置光标位置”宏定义 7.1 拓展功能
8 设置限定时间,到达该时间,用户尚未得到要求的分数时,游戏停止。
9 到达限定时间,用户得分达到预设的值时, 自动提高难度等级, 屏幕变色。
10 修改程序,底行的笑脸字母消失后,不再在该列下落字母(提示:设置数组记录笑脸字母的存在与否)。笑脸字母全部消失后, 游戏停止, 显示告别画面,显示用户成绩。
10.1 其他功能 设置限定出错次数,到达该出错次数,游戏停止 11 详细设计说明
首先先定义一个清屏幕的宏。调用这个宏,就清除Dos界面上的所有内容,汇编语言程序设计报告 4 专门显示我们所需要的菜单。接着定义我们的数据段代码。在数据段中,有我们菜单中所需要显示的提示信息,还有要显示在界面上方的字母乱序,以及给显示字母乱序所留出的数据空间。接下来就是定义堆栈段代码,为各段留下空间。再下来就是最重要的代码段,因为所有的功能都是在代码段中实现的。代码段中先实现显示主菜单、按Enter键开始程序和按E退出这几项简单的功能。接着实现显示字母乱序的功能,主要思想是将字母乱序放到之前定义的寄存器中。然后实现接受键盘所输入的内容的功能。如果输入的是Esc,则返回主菜单;如果输入的是Space,程序就暂停;如果是正确的字母,改字母就消失。消失的思想就是在当前字母位置输入空格,然后光标放到下一个下落的字母的位置。
11.1 原“typetest.asm”程序结构 打字练习程序的主要流程如图所示。
程序开始 显示菜单 键盘输入
E 退出 Enter 程序开始
字母显示模块 字母下落模块 暂停模块 退出处理模块 汇编语言程序设计报告 5 11.2 已经实现的功能(修改的、新编写的)程序结构 设置输入界面, 用户输入密码后才能进入主菜单 ;
id db 1,1,2,3,5,8 inf db ? string db 0ah,0dh,"Please enter the password(******):$" string1 db 0ah,0dh,"The password is wrong ,please enter the password again:$" lea dx,string mov ah,09h int 21h two: mov cx,6 lea si,id again: mov ah,01h int 21h and al,0fh cmp al,[si] jnz one inc si inc bx loop again jmp exit1 one: lea dx,string1 mov ah,09h int 21h jmp two 汇编语言程序设计报告
6 修改主菜单, 在主菜单上显示当天日期 ;
mov cx,6 mov bx,0 mov ah,0 mov al,9 s: push cx push ax out 70h,al in al,71h mov ah,al mov cl,4 shr ah,cl and al,00001111b add ah,30h add al,30h mov byte ptr ds:[bx],ah mov byte ptr ds:[bx+1],al pop ax cmp al,4 jna s1 jmp short s2 s1: dec al