汇编语言语法练习与代码转换
汇编转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练习[优质参考]
![汇编语言实验4涉及压缩BCD码数据的转换程序及DEBUG练习[优质参考]](https://img.taocdn.com/s3/m/da269b0e0b1c59eef8c7b47c.png)
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、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 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。