汇编语言语法练习与代码转换
汇编转c语言工具
汇编转c语言工具1 汇编转换C语言汇编转换C语言(Assembly to C)是一个汇编语言和C语言之间的转换,涉及到将汇编代码转换为C语言代码。
它提供了编程者一种可以将已有的汇编程序重写成符合C语言编程规范的程序的工具。
由于汇编语言和C语言之前的语法极为不同,所以很难直接将汇编语言转换为C语言,但是通过汇编转换C语言的工具,可以大大降低这种转换的难度。
一般情况下,这种转换工具都附带了自带能够把汇编代码解析为具体操作的模块,然后转换为C语言模块。
汇编转换C语言有助于减少编程所需要的时间,而且能够把原汇编程序重写为不同编程规范所要求的程序,可以让编程者方便地把旧有汇编程序加以复用,提高编程效率。
同时,汇编转换C语言的软件可以通过简单的命令行方式来使用,使程序的部署更加顺畅。
最后,汇编转换C语言还能够让程序具有更好的可读性和可维护性,让程序变得比较通用,从而有利于调试、升级、重构程序。
2 应用场景汇编转换C语言的应用领域很广泛,特别是在嵌入式系统中比较明显。
由于嵌入式系统一般是基于特定机器(如底层嵌入式处理器),所以在汇编程序运行时,它往往会因为不同机器型号,不同操作系统等差异而有不同的实现;而汇编转换C语言工具可以有效地将这种差异消除,使程序依然能够在不同机器上正常运行。
由于汇编语言和C语言具有显式不同的特点,汇编转换C语言的应用也包括更多的场景。
比如,将其他汇编代码转换为C语言,有助于程序的编码,检查和开发。
另外,汇编转换C语言工具还能够帮助程序员学习汇编编程,从而更好地了解程序的底层实现机制,也有利于提高编程效率。
3 总结汇编转换C语言的工具能够有效地将汇编代码转换为C语言代码,从而减少编程所需要的时间,使原有的程序在不同的编程规范间得到复用。
它的应用范围也非常广泛,特别是嵌入式系统中,可以有效地解决因机器型号不同而导致的问题。
除此之外,汇编转换C语言工具同样有助于程序员学习汇编编程,从而更好地了解程序的底层实现机制,提高编程效率。
汇编语言练习题2
一、单项选择题(共20题)1.对于有符号的数来说,下列哪个值最大( D)A:0F8H B:11010011B C:82 D:123Q2.下列有关汇编语言中标号的命名规则中,错误的是(D )A:通常由字母打头的字符、数字串组成 B:标号长度不能超过31个字符C:?和$不能单独作为标号 D:.号不可位于标号首3.设A=0.4H,B=0.8H,C=0.4,D=0.4Q,它们之间的关系是(C )。
A.C+D=B B.A+D=BC.B=D D.A>C>D4.下列四个寄存器中,可作为十六位寄存器的是(C )A.DL B.CLC.BP D.EBX5.8088/8086存储器分段,每个段不超过( D)A.64K个字B. 32K个字节C.1兆个字节D.64K个字节6.寻址指令MOV CX, [BX + DI + 20]使用的是哪一种寻址方式( B)A:寄存器寻址B:相对基址变址寻址C:变址寻址D:基址变址寻址7.连接程序把汇编语言源程序生成的目标文件(.OBJ文件)转换成( B)。
A..OBJ文件B..EXE文件C..LST文件D..CRF文件8.在程序运行过程中,确定下一条指令的物理地址的计算表达式是( A)。
A. (CS)×16+(IP)B. (DS)×16+(DI)C. (SS)×16+(SP) D.(ES)×16+(SI)9.若AX= - 15要得到AX=15应执行的指令是(A )A.NEG AXB.NOT AXC.INC AXD.DEC AX10.8086/8088系统执行传送指令MOV时(A )A.不影响标志位B.影响DF方向标志C.影响SF符号标志D.影响CF进位标志11.执行下列程序后,(AL)=(D )H。
DATA SEGMENTTAB DB ‘0123456789’DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX, DATAMOV DS, AXMOV BX, OFFSET TABMOV AL, 04XLAT TAB…A.04 B.0400C.33 D.3412.下列指令中操作数在代码段中的是(A )。
实验1---汇编语言语法练习与代码转换
实验报告( 2015/ 2016 学年第二学期)课程名称微型计算机原理与接口技术实验名称实验时间指导单位指导教师学院学号指导老师实验报告三、实验过程描述与结果分析汇编语言源程序编写好以后,必须经过下列几个步骤才能在机器上运行:(1) 编辑源程序(生成.ASM文件)(2) 汇编源程序(.ASM → .OBJ)(3) 目标程序(.OBJ → .EXE )(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)(5) 运行程序输出结果。
排除语法错误要求通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序。
但有很多语法错误,要求按照原样对源程序进行编辑,汇编后,根据TASM给出的错误信息对源程序进行修改,直到没有语法错误为止,然后进行,并执行相应的可执行文件。
正确的执行结果是在屏幕上显示:25+9=34。
修改后代码:(分号后为修改);FILENAME:EXA121.ASM.486DATA SEGMENT USE16SUM DB ?,?,MESG DB '25+9= 'DB 0,0 ;DB 0,0,'$'N1 DB 9,F0H ;DB 9,0F0HNEXT: ADD [BX+8],SUM ;NEXT:MOV CL,SUMADD BYTE PTR [BX+8],CL ADD [BX+7],30H ;ADD BYTE PTR [BX+7],30HADD [BX+8],30H ;ADD BYTE PTR [BX+8],30HRETCHANG:ENDPCODE ENDSEND BEG。
汇编语言程序代码
BEGIN: MOV AH, 1 ;从键盘输入一个字符的 DOS 调用 INT 21H SUB AL, ‘0’ JB STOP ;输入字符<‘0’吗? CMP AL, 9 ;输入字符>‘9’吗? JA STOP CBW MOV CX, AX ;响铃次数 N JCXZ STOP BELL: MOV DL, 07H ;准备响铃 MOV AH, 2 ;显示一个字符的 DOS 调用,实际为响铃 INT 21H CALL DELAY100ms ;延时 100ms LOOP BELL STOP: RET 5.6 编写程序,将一个包含有 20 个数据的数组 M 分成两个数组:正数数组 P 和负数数组 N, 并分别把这两个数组中数据的个数显示出来。 答:程序如下:
SHR AX, CL ;右移四次 DEC CH JNZ A10 ;循环四次完了码? B10: MOV DL, STORE ;四组数分别放在 AL、BL、CL 和 DL 中 MOV CL, STORE+1 MOV BL, STORE+2 MOV AL, STORE+3 STOP: RET 5.4 试编写一程序,要求比较两个字符串 STRING1 和 STRING2 所含字符是否完全相同,若相 同则显示‘MATCH’,若不相同则显示‘NO MATCH’。 答:程序如下:
DSEG SEGMENT STORE DB 4 DUP (?) DSEG ENDS BEGIN: MOV CL, 4 ;右移四次 MOV CH, 4 ;循环四次 LEA BX, STORE A10: MOV DX, AX AND DX, 0FH ;取 AX 的低四位 MOV [BX], DL ;低四位存入 STORE 中 INC BX
CMP AL, 41H ;又<A 吗? JB INPUT ;不是‘A~F’的数重新输入 CMP AL, 46H ;>F 吗? JA INPUT ;不是‘A~F’的数重新输入 AND AL, 0FH ;转换为:1010B~1111B ADD AL, 9 BINARY: OR BL, AL ;将键盘输入的数进行组合 DEL CH JNZ INPUT DISPN: MOV CX, 16 ;将 16 位二进制数一位位地转换成 ASCII 码显示 DISP: MOV DL, 0 ROL BX, 1 RCL DL, 1 OR DL, 30H MOV AH, 2 ;进行显示 INT 21H LOOP DISP STOP: RET 代码转换; 查表法,实现一位 16 进制数转换为 ASCII 码显示
实验1-汇编语言语法练习与代码转换
六、指导教师评语 (含学生能力达成度的评价)
成绩
批阅人
日期
评分项 评 遵守实验室规章制度
学习态度
算法思想准备情况
程序设计能力
分
解决问题能力
课题功能实现情况
算法设计合理性
算法效能评价
回答问题准确度
细
报告书写认真程度
内容详实程度
文字表达熟练程度
其它评价意见
则 本次实验能力达成评价 (总成绩)
优秀
良好
; 程序跳转,如果最高位 是 1 那么就输出 1
JNC print0_max ;程序跳转, 如果最高位 是 0 那么就输出 0
Hale Waihona Puke print1_max: MOV DL , 31h ;把要在屏幕上输出的 字符 预先放到DL寄存器里边 ,
31h 表示字符 1
MOV AH , 2 ;把 要调用的系统功能的 第几号功能值放入 AH里边
2.运行截图 有3个负数,接下来分别显示最大和最小数的16位补码
实验报告
7
四、实验小结(包括问题和解决方法、心得体会、意见与建议等)
(一) 实验中遇到的主要问题及解决方法 1.普通的 DB 型只有 8 位,放不下 255 这个数 解决方法:改用 16 位 DW 型
(二)实验心得 第一次尝试用汇编写程序感觉很难,为了实现一个很简单的功能,不仅需要编写一长串代码, 期间还需要注意各种规范,如数据类型问题、运算时的正负号问题等。其中寄存器的数量少,感觉不 够用,很容易被新数据覆盖,所以需要及时把寄存器中的数据存入储存器中。虽然这次实验给人的体 验十分不友好,但是我也从中学到一段合格的程序的确是需要这样精打细磨出来的,通过实验我对数 据在内存中的二进制存放形式有了更深刻的理解。现在我还需要工具书的帮助,但相信熟能生巧,加 以时日我一定可以更流畅地编写一段程序。 (三)意见与建议(没有可省略)
汇编语言系列之汇编实现各种码制的转换(思路详解)
汇编语⾔系列之汇编实现各种码制的转换(思路详解)⽬录1.⼗六进制转换为⼆进制数设计1.1设计要求:1.2设计思路:1.3程序清单:1.4程序运⾏结果及分析:2.⼗六进制转换为⼗进制数设计2.1设计要求:2.2设计思路:2.3程序清单:2.4程序运⾏结果及分析:3.⼗六进制转换为ASCII码3.1设计要求:3.2设计思路:3.3程序清单:3.4程序运⾏结果及分析:4.英⽂字母⼤⼩写转换设计4.1设计要求:4.2设计思路:4.3程序清单:4.4程序运⾏结果及分析:软件:emu8086语⾔:汇编语⾔(Assembly)注意:本⽂列出了⼗六进制转⼆进制、⼗进制、ASCII码及⼤⼩写字母转换的代码,全部代码为博主独⾃⼀⼈编写,会有瑕疵,谨慎使⽤。
1.⼗六进制转换为⼆进制数设计1.1设计要求:设计转换程序,将键盘键⼊的四位⼗六进制数据转换为等值的⼆进制数,并在终端显⽰。
要求:完善程序结构,设置程序错误出⼝。
输⼊的不是0-F间的值,显⽰错误提⽰信息,并要求重新输⼊。
1.2设计思路:依次输⼊四个⼗六进制数并依次存放到BX中,最后将BX中结果⼀位⼀位输出为⼆进制。
1.3程序清单:DATA SEGMENTpkey DB "pleas input 4 hex(0~F):$"ekey DB 0dh,0ah,'it is wrong!',0dh,0ah,'pleas input 4 hex(0~F) again:','$'huiche DB 0dh,0ah,'result is:',0dh,0ah,'$'numm DB 5 dup(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTATE:MOV AX,DATAMOV DS,AXMOV CX,4 ;输⼊⼗六进制数循环4次LEA SI,numm ;开辟变址寄存器SILEA DX,pkeyMOV AH,9INT 21H ;DOS功能调⽤,输出字符串lp: MOV AH, 1INT 21H ;DOS功能调⽤,输⼊4个⼗六进制数CMP AL,'9'JA abow9CMP AL,'0'JB eeroSUB AL,30h ;输⼊为0~9时ASCII码减30H存放JMP lopeero:LEA DX, ekey ;输⼊不在0~9且不在A~F时,显⽰错误MOV AH, 9INT 21HJMP lpabow9:CMP AL,'A'JNB abowaJMP eeroabowa:CMP AL,'F'JA eeroSUB AL,37h ;输⼊为A~F时ASCII码减37H存放JMP loplop: MOV [SI],ALROL BX,4ADD BX,[SI] ;将输⼊的数据存⼊BX寄存器中INC SIDEC CXJNZ lpMOV CX,16 ;输出⼆进制数循环16次LEA DX,huicheMOV AH,9INT 21H ;DOS功能调⽤,输出字符串lp1: ROL BX,1 ;左移1位后显⽰的是最⾼位MOV DL,BLAND DL,01H ;屏蔽DL⾼7位ADD DL,30H ;加30H对应ASCII码MOV AH,2INT 21H ;DOS功能调⽤,将内容按位输出DEC CXJNZ lp1CODE ENDSEND STATE1.4程序运⾏结果及分析:存放和输出时会遇到⼀些⼩问题,本程序通过移位和加法指令实现存放,⽐较⿇烦但可以实现,后⾯的程序有所改进。
汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习[优质参考]
ASCII码与BCD码之间的转换1)字符的ASCII码表示计算机中存储的信息很多,其中一部分是用于数学计算的数据,另一部分则是表示某种含义的字符或字符串。
由于从键盘输入的或屏幕显示的信息,都是用字符串的形式表示的。
因此,微机中必须能够存储和处理字符和字符串。
计算机中使用的字符包括有如下4类:·字母:A、B、C、…、Y、Z、a、b、c、…、y和z。
.数字:0、1、2、3、 (9)·专用符号:!、@、+、-、﹡、/、……·控制字符:BEL(响铃)、LF(换行)、CR(回车)……这些字符在计算机内部都由特定的二进制数表示。
目前在微机中,最常用的字符表示法是ASCII码(American Standard Code for Information Interchange,美国标准信息交换码)。
在这种表示法中,每一个字符可以表示为一个8位的二进制数,即一个字节。
其中。
低7位用于表示该字符的ASCII值,最高位未定义,一般可用作奇偶校验位。
常用字符的ASCII码表见表1.2。
2)、十进制数的BCD码表示BCD码(Binary Code Decimal),又称“二进制表示的十进制数”,是一种非常适合数据输出的编码。
一般而言,它可分为如下两种:(1)、压缩型BCD码:它用4位二进制数表示一位十进制数。
即采用二进制数0000~1001分别表示十进制数中的0~9,而另6种组合1010~1111在BCD中则不允许出现;(2)、非压缩型BCD码:它用8位二进制数,即一个字节表示一位十进制数。
其高4位固定为0,而低4位采用二进制数0000~1001分别表示十进制数中的0~9。
亦即用0000 0000~0000 1001分别表示十进制数中的0~9。
而其余组合则不允许出现。
表1列出了十进制数与BCD编码的对应关系。
1.按如下步骤操作,了解DEBUG 命令及其使用方法。
(1)打 DEBUG 进入 DEBUG 控制,显示提示符 '_ '。
汇编语言课程设计代码转换程序
汇编语言课程设计报告( 2011 -- 2012 年度第2 学期)代码转换程序专业计算机科学与技术学生姓名赵宝文班级B计算机102学号**********指导教师刘其明张静林完成日期2012年6月22日目录1 设计目的 (1)2 设计内容 (1)3 实现方式 (1)3.1 系统目标 (1)3.2 主体功能 (1)3.3 开发环境 (1)4系统概要设计 (1)4.1 系统的功能模块划分 (1)4.2 系统流程图 (2)5系统详细设计 (4)5.1 程序功能菜单模块设计 (4)小写字母向大写字母转换模块设计 (4)大写字母向小写字母转换模块设计 (5)5.4 二进制数向十六进制数转换模块设计 (5)5.5 十六进制数向二进制数转换模块设计 (5)5.6 十六进制数向十进制数转换模块设计 (6)6 测试 (6)6.1 测试方案 (6)6.2 测试结果 (7)7小结 (7)参考文献 (9)附录 (10)附录1 源程序清单 (10)附录程序功能菜单模块源程序 (10)附录小写字母向大写字母转换模块源程序 (12)附录大写字母向小写字母转换模块源程序 (13)附录二进制数向十六进制数转换模块源程序 (13)附录十六进制数向二进制数转换模块源程序 (14)附录十六进制数向十进制数转换模块源程序 (15)代码转换程序1 设计目的本课程设计是在学完教学大纲规定的全数内容、完成所有实践环节的基础上,旨在深化学生学习的汇编语言课程大体知识,进一步把握汇编语言程序设计方式,提高分析问题、解决问题的综合应用能力。
2 设计内容功能菜单的编制;小写字母向大写字母的转换;大写字母向小写字母的转换;二进制数向十六进制数的转换;十六进制数向二进制数的转换;十六进制数向十进制数的转换。
3 实现方式3.1 系统目标实现代码转换:大小写字母之间转换,二进制、十进制、十六进制之间的彼此转换。
3.2 主体功能Change1模块实现小写字母向大写字母的转换,change2模块实现大写字母向小写字母的转换。
汇编语言练习
1、8086/8088的存贮器组织是将存储器划分为段,可作为段的起始地址是()。
A.00010HB.AB076HC.010C3HD.12345H2、下列指令执行后,能影响标志位的指令是()。
A.PUSHFB.JNLE NEXTC.POPFD.LOOPZ LOP3、某存储单元的段地址是0AB50H,偏移地址是1234H,该存储单元的物理地址是()。
A.0BDC4HB.0AC734HC.0AD134HD.1CED0H4、AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是()。
A.指令XOR AX,AX执行后,AX内容不变,但影响了标志位。
B.指令OR DX,1000H执行后,将DX最高位置1,其余各位置0。
C.指令AND AL,OFH执行后,AL高四位清零,低四位内容不变。
D.指令NOT AX执行后,AX内容清零。
5、设DF=0,每次执行CMPSW指令时,SI和DI均要分别()。
A.减1B.减2C.加1D.加26、设(AL)=03H,要使(AL)=-03H应执行的指令是()。
A.OR AL,80HB.NOT ALC.NEG ALD.ADD AL,80H7、汇编语言语句格式中对名字项的规定如下,请找出其中错误的说法()。
A.名字的第一个字符可以是大写英文字母及小写英文字母B.名字的第一个字符可以是字母、数字及、@、_C.名字的有效长度≤31个字符D.在名字中不允许出现$8、比较两个带符号的数A、B,当A≠B时程序转移,测试的条件为()。
A.ZF=1B.ZF=0C.SF=1D.SF=09、下面各传送指令中,正确的是()。
A.MOV [DI],[SI]B.MOV[DX+DI],ALC.MOV WORD PTR [BX],0100HD.MOV AL,BX10、用于显示字符串的DOS系统功能调用,应设置AH寄存器的内容为()。
A.1HB.2HC.9HD.0AH11、DA1 DW‘AB’,‘CD’,‘EF’,‘GH’┇MOV AX,DA1+3指令执行后AX中的内容是()。
汇编语言代码转换程序实验报告
课程设计说明书题目: 代码转换程序院系:专业班级:学号:学生姓名:指导教师:2010 年 12 月 31 日安徽理工大学课程设计(论文)任务书计算机科学与工程学院硬件教研室2010年 12月 17安徽理工大学课程设计(论文)成绩评定表摘要本次课程设计的题目是代码转换,这是一个基于计算机和汇编环境的程序,主要就是通过完成这次设计,实现二进制,十进制,十六进制代码的转换,以及大小写字母之间的转换。
从而掌握不同进制数及编码相互转换的程序设计方法,知道将存储在内存单元中的数据以十六进制数、十进制数形式和二进制数形式显示在屏幕上的方法,加深对数码转换的理解。
而且学会用INT21功能实现人机对话掌握代码转换的基本方法。
该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。
关键词:代码,进制,大小写字母,转换,INT21,人机交互性目录1设计目的 (1)2概要设计 (2)2.1 系统总体分析 (2)2.2 主模块框图及说明 (2)3 详细设计 (4)3.1 主模块及子模块说明 (4)3.2 各模块详细设计 (4)4程序调试 (11)4.1 运行界面分析 (11)4.2算法的分析 (12)4.3 调试过程及分析 (13)5心得体会 (14)5.1 设计体会 (14)5.2 系统改进 (14)参考文献 (15)1设计目的在做本次课程设计之前,首先要了解设计的目的。
本次课程设计的题目是代码转换,这是一个基于计算机和汇编环境的程序,主要就是通过完成这次设计,实现二进制,十进制,十六进制代码的转换,以及大小写字母之间的转换。
从而掌握不同进制数及编码相互转换的程序设计方法,知道将存储在内存单元中的数据以十六进制数、十进制数形式和二进制数形式显示在屏幕上的方法,加深对数码转换的理解。
而且学会用INT21功能实现人机对话掌握代码转换的基本方法。
该程序界面友好,能够通过键盘输入选择相应的转换,结果也能够比较直观的显示在我们眼前,具有一定的人机交互性。
汇编语言转换高级语言的方法
汇编语言转换高级语言的方法在计算机科学领域,汇编语言和高级语言都是编程语言的一种形式。
汇编语言是一种低级语言,与计算机硬件直接相关,使用机器指令来编写程序。
高级语言则更接近人类自然语言,使用更高层次的抽象和语法来编写程序。
本文将探讨汇编语言转换为高级语言的方法。
一、反汇编反汇编是将汇编语言代码转换为高级语言代码的一种方法。
反汇编器是一个软件工具,可以将汇编语言代码解析为与之等效的高级语言代码。
反汇编器通过分析二进制指令,推导出原始的汇编语句,并将其转换为高级语言代码。
使用反汇编的一个常见应用是逆向工程。
逆向工程是指对已有的机器码程序进行分析和研究,以了解其内部结构和功能。
通过反汇编器,可以将机器码转换为汇编语言代码,进而转换为高级语言代码,以便进行代码审查、漏洞分析和修复等操作。
二、迁移转换工具除了反汇编,另一种常见的汇编语言转换为高级语言的方法是使用迁移转换工具。
这些工具旨在将汇编语言代码转换为高级语言代码,以实现代码迁移、重构或跨平台开发等需求。
迁移转换工具一般使用规则引擎和模式匹配等技术来实现代码的转换。
它们通过识别汇编代码中的模式,并将其映射到高级语言中的等效构造,从而实现代码的转换。
这种方法在一定程度上可以减轻开发人员手工转换的工作量,并提高代码的可理解性和可维护性。
三、手动转换对于一些特定的汇编语言代码,可能没有现成的反汇编工具或转换工具适用。
这时,只能进行手动转换。
手动转换需要开发人员对汇编语言和高级语言都有较深的理解和熟练的编程技巧。
手动转换的过程可以分为以下几个步骤:1. 分析和理解汇编代码的功能和逻辑。
2. 将汇编代码中的每个指令转换为高级语言中的等效操作。
3. 根据需要适当重构和优化代码结构和算法。
4. 通过测试和调试验证转换后的代码的正确性和性能。
手动转换虽然耗时耗力,但它可以提供更灵活的控制和优化,适应更复杂的场景,并在转换过程中保留较高的代码质量。
结论汇编语言转换为高级语言的方法多种多样,可以根据具体情况选择合适的方法。
20个简单汇编语言程序
20个简单汇编语言程序以下是20个简单的汇编语言程序示例:1. 计算两个数的和:MOV AX, 5。
ADD AX, 3。
这段代码将 5 存储在 AX 寄存器中,然后将 3 加到 AX 中,最终 AX 中的值为 8。
2. 比较两个数的大小:MOV AX, 5。
CMP AX, 3。
这段代码将 5 存储在 AX 寄存器中,然后将 AX 中的值与 3 进行比较。
3. 循环打印数字:MOV CX, 10。
MOV AX, 1。
LOOP_START:MOV DL, AL.ADD DL, 48。
MOV AH, 2。
INT 21h.INC AL.LOOP LOOP_START.这段代码使用循环打印数字 1 到 10。
4. 计算阶乘:MOV CX, 5。
MOV AX, 1。
LOOP_START:MUL CX.LOOP LOOP_START.这段代码计算 5 的阶乘,并将结果存储在 AX 寄存器中。
5. 判断奇偶数:MOV AX, 7。
AND AX, 1。
这段代码将 7 存储在 AX 寄存器中,然后将 AX 中的值与 1进行与运算,结果为 1,表示奇数。
6. 字符串反转:MOV SI, OFFSET str.MOV DI, OFFSET str.MOV CX, LENGTHOF str.DEC CX.REVERSE_LOOP:MOV AL, [SI]MOV DL, [DI+CX]MOV [DI+CX], AL.MOV [SI], DL.INC SI.LOOP REVERSE_LOOP.这段代码将字符串 `str` 反转。
7. 计算斐波那契数列:MOV CX, 10。
MOV AX, 0。
MOV BX, 1。
FIB_LOOP:ADD AX, BX.XCHG AX, BX.LOOP FIB_LOOP.这段代码计算斐波那契数列的前 10 个数。
8. 判断一个数是否为质数:MOV AX, 17。
MOV BX, 2。
CHECK_PRIME:XOR DX, DX.DIV BX.CMP DX, 0。
汇编语言习题解答
8086/8088汇编语言习题解答第一章、试根据自己使用计算机的经历,列举几个必须使用或最好是使用汇编语言编制程序的事例。
、试完成下列数制间的转换⑴、十进制数转换为8位二进制数十进制:100 对应二进制:01100100B十进制:56 对应二进制:00111000B十进制:111 对应二进制:01101111B十进制: 120 对应二进制:01111000B十进制: 70 对应二进制:01000110B⑵、8位二进制数(无符号数)转换为十进制数二进制:01010101B 对应十进制:85二进制:B 对应十进制:170二进制:B 对应十进制:240二进制:00001111B 对应十进制:15⑶、十进制数转换为十六进制数十进制:40 对应二进制:00101000B十进制:80 对应二进制:01010000B十进制:105 对应二进制:01101001B十进制: 114 对应二进制:01101101B十进制: 207 对应二进制:B、试把下面用补码表示的二进制数转换为对应的十进制真值二进制补码:01111000 对应的十进制值数真值:+120二进制补码:对应的十进制值数真值:-39二进制补码:对应的十进制值数真值:-127二进制补码:对应的十进制值数真值:-120二进制补码:00100111 对应的十进制值数真值:+39二进制补码:对应的十进制值数真值:-16、由键盘输入字符通常都是以该字符的ASCII码形式表示的。
若现在从键盘上输入十六进制数0~F,那么应如何处理才能把十六进制转换为4位二进制数0000~1111.答:将键盘输入的数0~F的ASCII码,每输入一个字符,减去30H后,再存入内存,这样就完成了把从键盘上输入的十六进制ASCII码转换为4位二进制数0000~1111.、试分别判断下列各组数据中哪个数据最大?哪个最小?①、A= B=0,101D C=0,101H②、A=1011B B=1011D C=1011H答:第①组:A=1×21-+1×23-=B=C=1×161-+163-=+=所以A最大,C最小第②组,B最大,A=B最小、现有一个二进制数.若将该数看着是无符号数、原码表示的带符号数、补码表示的带符号数,它对应的十进制数的真值是多少?答:.的无符号数的十进制是:+182;.的原码带符号数的十进制是:-54.补码表示的带符号数的十进制是:+74、下列各组数据均为十进制数,先将各数据转换为补码表示的带符号数,然后用补码的加减运算分别完成下列各小题,并用十六进制数形式回答运算结果。
(汇编语言)练习题
(汇编语言)练习题【一】填空题〔每题0.5分,共10分〕1、26.25D= B= O= H2、-56D的原码为 B,反码为 B,补码为 B。
3、0C51H的反码为 B,补码为 B。
4、十进制数87的压缩BCD码为 B,非压缩BCD码为 B。
6、设〔BX〕=1000H,〔DI〕=0010H,〔DS〕=2100H,在指令MOV AX,[BX+DI]中,源操作7、设BUF为数据段0234H单元的符号名,其中存放的内容为3456H。
写出以下指令单独执行后的结果。
〔1〕MOVAX,BUF〔AX〕=〔2〕LEAAX,BUF〔AX〕=8、子程序的参数传递方法包括、、。
9、实模式下存储器的20位物理地址由加形成。
【二】选择题〔每题1分,共10分〕1、以下通用数据传送指令的几种传送中,错误的传送方式是()。
A、从累加器到存储器B、马上数到存储器C、从寄存器到存储器D、从存储器到存储器2、使进位位置1的指令是()。
A、CLCB、CMCC、STCD、NOP3、设AL,BL中基本上有符号数,当AL<=BL时转至NEXT处,在CMPAL,BL指令后,应选用正确的条件转移指令是()。
A、JBEB、JNGC、JNAD、JNLE4、指令LOOPZ的循环执行条件是()。
A、CX<>0同时ZF=0B、CX<>0或ZF=0C、CX<>0同时ZF=1D、CX<>0或ZF=15、以下合法的变量名称是〔〕。
A、9BUFB、ADDC、BUF9D、ASSUME6、一条指令中目的操作数不同意使用的寻址方式是()。
A、寄存器寻址B、马上数寻址C、变址寻址D、寄存器间接寻址7、DOS的功能调用号必须送〔〕寄存器。
A、DLB、DHC、ALD、AH8、在实模式下,存储器治理采纳分段模式,每段大小可达〔〕。
A、64MB、1MC、64KD、16字节9、用来存放下一条将要执行的指令地址的寄存器是()。
A、SPB、IPC、BPD、CS10、要使串操作从低地址向高地址进行,应把标志位设置为()。
《汇编语言程序设计》
解法1
解法2
MOV AX, WORD PTR FIRST XCHG AX, WORD PTR SECOND MOV WORD PTR FIRST, AX
解法3
错误的代码 MOV AL, FIRST
MOV BL, SECOND
XCHG AL, BL MOV AL, FIRST+1 MOV BL, SECOND+1 XCHG AL, BL MOV MOV MOV MOV MOV MOV AH, FIRST FIRST, SECOND SECOND, AH AH, FIRST+1 FIRST+1, SECOND+1 SECOND+1, AH
66H
01H
CAH 01H
AX=6601H
(2)采用堆栈指令编写 PUSH WORD PTR FIRST PUSH WORD PTR SECOND POP WORD PTR FIRST POP WORD PTR SECOND
第1条指令执行后 第2条指令执行后 第3条指令执行后 第4条指令执行后
56H 78H 12H
12H
34H
34H
12H 34H
实验二:用户登录验证程序
时间:周四 地点:1416 类型:设计
• 一、实验目的: 学习掌握汇编语言的开发过程,汇编源程序的编程格式和基本结构, DOS/BIOS功能调用,掌握分支、循环、子程序等基本结构程序的设计方 法。 • 二、实验内容 用汇编语言程序设计方法,设计一个用户登陆验证程序。 • 三、实验要求 1. 程序执行后,给出操作提示,请用户键入用户名和密码。 2. 用户在键入密码时,程序不回显键入字符。 3. 只有当用户键入的用户和密码字符串和程序内定的字符串相同时,显 示欢迎界面,并返回DOS。 • 四、实验报告要求 实验报告的内容:实验名称、实验目的、实验内容、实验程序、实验结 果分析、实验过程遇到的问题及体会。 实验报告以文本形式递交,要求书写规范、文字简练、语句通顺、图表 清晰。
汇编语言中的字符串、代码转换
一个字符串中包含的字符个数,称为这个字符串的长度。长度为 零的字符串称为空串,它不包含任何字符。字符串通常用单引号或 双引号括起来,例如:
Hale Waihona Puke 3.LODS取串指令格式:可有三种 LODS SRC;源串元素由DS:SI指定的存储单元,目的串元素隐 含在由DS:AL或DS:AX指定的存储单元 LODSB; 8位字符串操作,省略源串和目的串不写 LODSW; 16位字符串操作,省略源串和目的串不写 功能:该指令把由SI指定的数据段中某单元[SI]的内容送到AL或 AX中,并根据方向标志及数据类型修改SI的内容。 说明: 1)如果是字节操作则先将由SI指定的单元内容送入AL中,然后 SI再自加/减1;如果是字操作则将[SI]送入AX,然后SI再自加/减 2。 2)该指令不影响标志位。
(1) ” X1 ” (2) ’ABC’
返回本节
字符串所能包含的字符,依赖于具体机器的字符集。目前世 界上应用最广的字符集是ASCII码字符集。 存储字符串的方法也就是存储列表的一般方法。最简单最普遍的 方法是顺序存储,还有链接存储等,这里仅讨论顺序存储的字符 串。 字符串的表示在8086/8088宏汇编语言中,可以借助数据定义语 句DB(因一个ASCII码是7位)来定义,字符串的特征表示一般有 两种,一种是在字符串的尾部用00H作标记,另一种是在字符串的 前面空出一个单元,放置字符串的长度。例: STRI DB ’ I am a student’,0 STR2 DB 4,’ABCD’
汇编语言字母大小写转换
实验1 汇编语言选择结构程序设计班级xxxxx 学号xxxxx 姓名xxxxxx实验题目:完善例子:要求连续将键盘输入的小写字母转为大写字母,字母之间用“-”号间隔;若输入大写字母则直接输出,其他字符则不处理和输出,提示重新输入。
实验目的:1. 掌握选择结构程序设计;2. 掌握跳转类指令的使用;4. 掌握MASM、LINK、DEBUG等工具的使用。
实验设备:硬件:PC机软件:DOS操作系统、编辑软件、MASM 5.0实验内容:1.程序代码DA TA SEGMENTSTR DB 'Wrong word!Please input again:$'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART:MOV AH,01HINT 21HMOV BL,AL ;保存在BL中MOV DL,'-' ;送‘-’号到DLMOV AH,02H ;显示‘-’INT 21H ;取回输入的字符MOV AL,BLCMP AL,'a' ;与‘a’比较JB A;小于‘a’转ACMP AL,'z' ;与‘z’比较JA EXIT ;大于‘z’转到EXITSUB AL,20H ;取大写字母MOV DL,AL ;输出MOV AH,02HINT 21HC: MOV DL,0AH ;输出换行MOV AH,02HINT 21HMOV DL,0DH ;输出回车MOV AH,02HINT 21HJMP START ;无条件转A: CMP AL,'A'JAE BJB DCMP AL,'Z'JBE BB: MOV DL,ALMOV AH,02HINT 21HLOOP CD: MOV BX,DA TA;请重新输入MOV DS,BXLEA DX,STRMOV AH,09HINT 21HLOOP BJMP STARTMOV AH,4CHINT 21HEXIT: MOV AH,4CHINT 21HCODE ENDSEND START2.调试过程如下图所示:(具体应用DEBUG指令及其结果)使用DEBUG调试过程以及程序运行结果如下所示:实验思考与总结:通过这次实验,使我对汇编语言的源程序结构有了一个系统地认识,并且掌握了选择结构程序设计,掌握了跳转类指令的使用和几种常见的DOS功能的使用;以及MASM、LINK、DEBUG等工具的使用,由于初次编写汇编程序,在实验过程中遇到了很多问题,但通过查看课本和请教老师,最终完成了实验,达到了实验的目的。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验报告
(2014/ 2015 学年第二学期)
课程
名称微型计算机原理与接口技术
实验名称汇编语言语法练习与代码转换
实验时间2016年1
月1
3
日
指导
单位
计算机学院、软件学院
指导
教师
顾磊
学生姓名杜刚班级
学号
141103
学院(系)通信工程专
业
信息工程
实验报告
三、实验过程描述与结果分析
汇编语言源程序编写好以后,?必须经过下列几个步骤才能在机器上运行:
(1) 编辑源程序(生成.ASM文件)?
(2) 汇编源程序(.ASM??→?.OBJ)?
(3) 链接目标程序(.OBJ?→?.EXE?)?
(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)?
(5) 运行程序输出结果。
排除语法错误
要求通过比较法完成8位二进制数转换成十进制数送屏幕显示功能的汇编语言源程序。
但有很多语法错误,要求按照原样对源程序进行编辑,汇编后,根据TASM给出的错误信息对源程序进行修改,直到没有语法错误为止,然后进行链接,并执行相应的可执行文件。
正确的执行结果是在屏幕上显示:25+9=34。
修改后代码:(分号后为修改)
;FILENAME:
.486
DATA SEGMENT USE16
SUM DB '',''
MESG DB '25+9='
DB 0,0,'$' ;以'$'结尾,没有输出会乱码
N1 DB 9,0F0H
N2 DB 25
DATA ENDS
CODE SEGMENT USE16
;FILENAME:
.486
DATA SEGMENT USE16
MESG DB 'HELLO'
DB 0,0,0
DATA ENDS
CODE SEGMENT USE16
ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA
MOV DS,AX
MOV ES,AX
MOV CX,5
LL1: MOV MESG+5,0DH
MOV MESG+6,0AH
MOV MESG+7,'$'
CALL DISP
MOV MESG+5,0
MOV MESG+6,0
MOV MESG+7,0
LOOP LL1
MOV AH,4CH
INT 21H
DISP PROC
MOV AH,9
MOV DX,OFFSET MESG INT 21H
RET
DISP ENDP
CODE ENDS
END BEG。