(汇编语言)十六进制转换十进制
计算机等级考试一级B模拟试题及答案
计算机等级考试一级B模拟试题及答案(四)(1)计算机模拟是属于哪一类计算机应用领域?A)科学计算B)信息处理C)过程控制D)现代教育【答案】D【解析】计算机作为现代教学手段在教育领域中应用得越来越广泛、深入。
主要有计算机辅助教学、计算机模拟、多媒体教室、网上教学和电子大学。
(2)将微机分为大型机、超级机、小型机、微型机和A)异型机B)工作站C)特大型机D)特殊机【答案】B【解析】按照微机的性能可以将微机分为大型机、超级机、小型机、微型机和工作站。
(3)十进制数45用二进制数表示是A)B)C)D)【答案】D【解析】十进制向二进制的转换采用"除二取余"法。
(4)十六进制数5BB对应的十进制数是A)2345 B)1467 C)5434 D)2345 【答案】B【解析】十六进制数转换成十进制数的方法和二进制一样,都是按权展开。
(5)二进制数转换成十六进制数是A)2B B)4D C)45F D)F6 【答案】A【解析】二进制整数转换成十六进制整数的方法是:从个位数开始向左按每4位二进制数一组划分,不足4位的前面补0,然后各组代之以一位十六进制数字即可。
(6)二进制数1转换成十六进制数是A)5FB B)F87 C)FC D)F45 【答案】B【解析】二进制整数转换成十六进制整数的方法是:从个位数开始向左按每4位二进制数一组划分,不足4位的前面补0,然后各组代之以一位十六进制数字即可。
(7)二进制数6554对应的十进制数是A)85 B)89 C)87 D)82 【答案】D【解析】二进制数转换成十进制数的方法是按权展开。
(8)下列字符中,其ASCII码值最大的是A)5 B)b C)f D)A 【答案】C【解析】字符对应数字的关系是"小写字母比大写字母对应数大,字母中越往后越大"。
推算得知f应该是最大。
(9)以下关于计算机中常用编码描述正确的是A)只有ASCII码一种 B)有EBCDIC码和ASCII码两种 C)大型机多采用ASCII码D)ASCII码只有7位码【答案】B【解析】计算机中常用的编码有EBCDIC码和ASCII码两种,前者多用于大型机,后者多用于微机。
习题解答
第1章汇编语言基础知识习题解答1.1 什么是汇编语言?汇编语言的特点是什么?答:为了克服机器语言难以记忆、表达和阅读的缺点,人们采用具有一定含义的符号作为助忆符,用指令助忆符、符号地址等组成的符号指令称为汇编格式指令(或汇编指令)。
汇编语言是汇编指令集、伪指令集和使用它们规则的统称。
汇编语言的特点是:(1)执行速度快。
(2)程序短小。
(3)可以直接控制硬件。
(4)可以方便地编译。
(5)辅助计算机工作者掌握计算机体系结构。
(6)程序编制耗时,可读性差。
(7)程序可移植性差。
1.2 把下列十进制数转换成二进制数、八进制数、十六进制数。
① 127 ② 1021 ③ 0.875 ④ 6.25答:① 1111111B;177Q;7FH ② 1111111101;1775Q;3FDH③ 0.111 B;0.7Q;0.EH ④ 110.01B;6.2Q;6.4H1.3把下列二进制数转换成十进制数。
① 1001.11 ② 101011.10011 ③ 111.011 ④1011.1答:① 9.75D ② 43.59375D ③ 7.375D ④ 11.5D1.4 把下列八进制数转换成十进制数。
① 573.06 ② 75.23 ③ 431.7 ④ 123.45答:① 379.09375D ② 61.296875D ③ 281.875 ④83.5781251.5 把下列十六进制数转换成十进制数。
① 0D5.F4 ② 8BA.7C ③ 0B2E.3A ④ 6EC.2D答:① 213.953125D ②2234.484375 ③2862.2265625 ④1772.175781251.6 把下列英文单词转换成ASCII编码的字符串。
① Upper ② Blow ③ Computer ④ What答:① 55H,70H,70H,65H,72H ② 53H,6CH,6FH,77H③ 43H,6FH,6DH,70H,75H,74H,65H,72H ④ 57H,68H,61H,74H1.7求下列带符号十进制数的8位基2码补码。
单片机汇编进制转换问题,十六进制,十进制,BCD
此属本人原创请尊重知识产权:多字节十六进制转换为十进制(多字节十六进制除十运算)MOV 40H,#0FFH ;三字节数据的低位存放地址MOV 41H,#0FFHMOV 42H,#0FFH ;三字节数据的高位存放地址MOV R0,#50H ;转换后十进制数存放的首地址(个位)MOV R2,#7 ;取十进制的位数减一(如FFFFFFH转换为十进制是16777215,八位减一就是7)CFYS:MOV R1,#40H ;给高字节地址MOV B,#00H ;避免影响下一轮运算SCCF:MOV A,@R1ANL A,#0F0H ;屏蔽低四位ORL A,B ;合并给A(被除数)SWAP AMOV B,#10DIV ABSWAP A ;高位在AXCH A,@R1 ;商高位在ANL A,#0FH ;屏蔽高四位XCH A,BSWAP AORL A,B ;合并给A(被除数)MOV B,#10DIV ABORL A,@R1 ;合并给A(被除数)MOV @R1,AINC R1CJNE R1,#43H,SCCF ;是否完成一次除十运算MOV @R0,BINC R0DJNZ R2,CFYS ;是否完成全部运算MOV @R0,A(以上程序编写于2014/10/03上午)BCD码和十六进制的转换大家都知道汇编语言里把十六进制转换为BCD码用DA指令,但是没有哪条指令能把BCD码转换为16进制,我曾经也很为此困惑,但最终我解决了此问题,看程序!假如R0里储存的是37分钟的BCD码,那么R0里的数是37H,要把它转换成37的十六进制25H存入R1中。
我们现实的算法是37/16=25H就可以得出结果,但是机器没那么聪明,因为37H是十六进制。
汇编程序解决的方法如下:MOV A,R0 ;ANL A,#0FH ;屏蔽高4位(即屏蔽分钟的十位)MOV R2,A ;把个位的值给R2MOV A,R0 ;ANL A,#0F0H ;屏蔽低4位(即屏蔽分钟的个位)SWAP A ;高低字节互换MOV B,#10 ;给B赋值(也可以赋0AH)MUL AB ;A乘B得出十位的十六进制值ADD A,R2 ;十位的值加上个位的值MOV R1,A ;把转换好的十六进制值给R1(以上程序编写于2014/09/13中午)。
汇编语言
汇编作业第一章作业1.1用降幂法和除法将下列十进制数转换为二进制数和十六进制数:(1) 369 (2) 10000 (3) 4095 (4) 327671.2 将下列二进制数转换为十六进制数和十进制数:(1) 10 1101 (2) 1000 0000 (3) 1111 1111 1111 1111 (4) 1111 11111.3将下列十六进制数转换为二进制数和十进制数:(1) FA (2) 5B (3) FFFE (4) 12341.4 完成下列十六进制数的运算,并转换为十进制数进行校核:(1) 3A+B7 (2) 1234+AF (3) ABCD-FE (4) 7AB×6F1.5下列各数均为十进制数,请用8位二进制补码计算下列各题,并用十六进制数表示其运算结果。
(1) (-85)+76 (2) 85+(-76) (3) 85-76 (4) 85-(-76) (5) (-85)-76 (6)-85-(-76)1.6下列各数为十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的带符号数或无符号数时,它们所表示的十进制数是什么?(1) D8 (2) FF1.7 下列各数均为用十六进制表示的8位二进制数,请说明当它们分别被看作是用补码表示的数或字符的ASCII码时,它们所表示的十进制数及字符是什么?(1) 4F (2) 2B (3) 73 (4) 591.8请写出下列字符串的ASCII码值。
For example,This is a number 3692.第二章作业2.1在80x86微机的输入/输出指令中,I/O端口号通常是由DX寄存器提供的,但有时也可以在指令中直接指定00~FFH的端口号。
试问可直接由指令指定的I/O 端口数。
2.2有两个16位字1EE5H和2A3CH分别存放在80x86微机的存储器的000B0H和000B3H单元中,请用图表示出它们在存储器里的存放情况。
《汇编语言程序设计》(第四版)教案及答案解析
《汇编语言程序设计》教案附:习题参考答案《汇编语言程序设计》(第4版)钱晓捷主编前言1.汇编语言是计算机能提供给用户的最快而又最有效的语言,也是能够利用计算机所有硬件特性并能直接控制硬件的唯一语言。
2.汇编语言程序设计是高等院校电子计算机硬、软件及应用专业学生必修的核心课程之一。
它不仅是计算机原理、操作系统等其它核心课程的必要先修课,而且对于训练学生掌握程序设计技术、熟悉上机操作和程序调试技术都有重要作用。
3.本教材共有十一章,其内容安排如下:(1).第一、二章为汇编语言所用的基础知识。
(2).第三章详细介绍80x86系列CPU的指令系统和寻址方式。
(3).第四章介绍伪操作、汇编语言程序格式及汇编语言的上机过程。
(4).第五、六章说明循环、分支、子程序结构和程序设计的基本方法。
(5).第七章说明宏汇编、重复汇编及条件汇编的设计方法。
(6).第八章叙述输入/输出程序设计方法,重点说明中断原理、中断过程及中断程序设计方式。
(7).第九章说明BIOS和DOS系统功能调用的使用方法。
(8).第十~十一章分别说明图形显示、发声及磁盘文件存储的程序设计方法,同时提供各种程序设计方法和程序实例。
附:教学参考书1.沈美明、温冬婵编著,IBM–PC汇编语言程序设计(第2版),清华大学出版社,2001年(教材)2.沈美明、温冬婵编著,IBM–PC汇编语言程序设计,清华大学出版社,1991年3.沈美明、温冬婵编著,IBM–PC汇编语言程序设计—例题习题集,清华大学出版社,1991年6月4.沈美明、温冬婵、张赤红编著,IBM–PC汇编语言程序设计—实验教程,清华大学出版社,1992年5.周明德,微型计算机IBM PC/XT(0520系列)系统原理及应用(修订版),清华大学出版社,19916.郑学坚、周斌,微型计算机原理及应用(第二版),清华大学出版社,19957.王士元、吴芝芳,IBM PC/XT[长城0520] 接口技术及其应用,南开大学出版社,19908.杨素行,微型计算机系统原理及应用,清华大学出版社,19959.戴梅萼、史嘉权,微型计算机技术及应用—从16位到32位(第二版),清华大学出版社,199610.张昆藏,IBM PC/XT微型计算机接口技术,清华大学出版社,199111.孟绍光,李维星,高档微机组成原理及接口技术(80386/80486/Pentium),学苑出版社,199312.吴秀清,周荷琴,微型计算机原理与接口技术,中国科学技术大学出版社目录第 1 章基础知识 (1)1.1进位计数制与不同基数的数之间的转换 (1)1.2二进制数和十六进制数的运算 (2)1.3计算机中数和字符的表示 (3)1.4几种基本的逻辑运算 (3)第 2 章 80X86计算机组织 (4)2.180X86微处理器 (4)2.2基于微处理器的计算机系统构成 (4)2.3中央处理机 (5)2.4存储器 (6)2.5外部设备 (7)第 3 章 80X86的指令系统和寻址方式 (8)3.180X86的寻址方式 (8)3.2程序占有的空间和执行时间 (10)3.380X86的指令系统 (10)第 4 章汇编语言程序格式 (27)4.1汇编程序功能 (27)4.2伪操作 (27)4.3汇编语言程序格式 (31)4.4汇编语言程序的上机过程 (34)第 5 章循环与分支程序设计 (37)5.1循环程序设计 (37)5.2分支程序设计 (38)5.3如何在实模式下发挥80386及其后继机型的优势 (38)第 6 章子程序结构 (40)6.1子程序的设计方法 (40)6.2子程序的嵌套 (41)6.3子程序举例 (41)第 7 章高级汇编语言技术 (43)7.1宏汇编 (43)7.2重复汇编 (44)7.3条件汇编 (45)第 8 章输入/输出程序设计 (46)8.1I/O设备的数据传送方式 (46)8.2程序直接控制I/O方式 (47)8.3中断传送方式 (47)第 9 章 BIOS和DOS中断 (50)9.1键盘I/O (50)9.2显示器I/O (52)9.3打印机I/O (53)9.4串行通信口I/O (54)第 10 章图形与发声系统的程序设计 (55)10.1显示方式 (55)10.2视频显示存储器 (55)10.3EGA/VGA图形程序设计 (56)10.4通用发声程序 (57)10.5乐曲程序 (58)第 11 章磁盘文件存取技术 (59)11.1磁盘的记录方式 (59)11.2文件代号式磁盘存取 (60)11.3字符设备的文件代号式I/O (61)11.4BIOS磁盘存取功能 (62)附录:《IBM—PC汇编语言程序设计》习题参考答案 (63)第一章.习题 (63)第二章.习题 (64)第三章.习题 (65)第四章.习题 (79)第五章.习题 (84)第六章.习题 (104)第七章.习题 (118)第八章.习题 (125)第九章.习题 (130)第十章.习题 (134)第十一章.习题 (145)第 1 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
汇编语言课程设计四则运算计算器
*******************实践教学*******************兰州理工大学技术工程学院2013年春季学期汇编语言实训课程设计题目:四则运算计算器专业班级:计算机科学与技术姓名:___郭利强_____学号: 11730108指导教师:刘树群成绩:计算机科学与技术专业(11级)汇编语言实训课程设计任务书题目:四则运算计算器班级: 11计算机科学与技术1班学生姓名:郭利强学号: 11730108 题目类型:软件工程(R)指导教师:刘树群一.题目简介四则运算计算器,主要是为了解决数学中的加、减、乘、除四则运算的问题。
通过该题目的设计过程,可以培养学生结构化程序设计的思想,加深对汇编语言基本语言要素和流程结构的理解,针对汇编语言中的重点和难点内容进行训练,独立完成有一定工作量的程序设计任务,同时强调好的程序设计风格。
得到软件工程的综合训练,提高解决实际问题的能力。
二.设计任务1、查阅文献资料,一般在5篇以上;2、要求可以进行四则运算;3、完成软件结构设计和算法设计;4、完成系统的软件开发和测试工作;5、撰写设计说明书;6、做好答辩工作。
三.主要内容、功能及技术指标1、实现功能及指标:①使用Win32的窗口程序模式,实现四则运算程序的设计与开发;②界面友好。
2、问题分析及解决方案框架确定:充分地分析和理解问题本身,弄清要求做什么。
在确定解决方案框架过程中,综合考虑系统功能,考虑怎样使系统结构清晰、合理、简单和易于调试。
最后确定每个过程和函数的简单功能,以及过程(或函数)之间的调用关系,并画出函数之间的调用关系图。
3、详细设计和编码:定义相应的存储结构,确定各个函数的算法,并画出流程图,在此基础上进行代码设计,每个明确的功能模块程序一般不超过200行,否则要进一步划分。
4、上机前程序静态检查:上机前程序静态检查可有效提高调试效率,减少上机调试程序时的无谓错误。
静态检查主要有两种途径:用一组测试数据手工执行程序;通过阅读或给别人讲解自己的程序而深入全面地理解程序逻辑。
钱晓捷新版汇编语言程序设计习题答案(修改)
钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识1.1、简述计算机系统的硬件组成与各部分作用1.2、明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB1.3、什么是汇编语言源程序、汇编程序、目标程序?1.4、汇编语言与高级语言相比有什么优缺点?1.5、将下列十六进制数转换为二进制和十进制表示〔1〕FFH 〔2〕0H 〔3〕5EH 〔4〕EFH〔5〕2EH 〔6〕10H 〔7〕1FH 〔8〕ABH1.6、将下列十进制数转换为BCD码表示〔1〕12 〔2〕24 〔3〕68 〔4〕127〔5〕128 〔6〕255 〔7〕1234 〔8〕24581.7、将下列BCD码转换为十进制数〔1〕10010001 〔2〕10001001 〔3〕00110110 〔4〕10010000〔5〕00001000 〔6〕10010111 〔7〕10000001 〔8〕000000101.8、将下列十进制数分别用8位二进制数的原码、反码和补码表示〔1〕0 〔2〕-127 〔3〕127 〔4〕-57〔5〕126 〔6〕-126 〔7〕-128 〔8〕681.9、完成下列二进制数的运算〔1〕1011+1001 〔2〕1011-1001 〔3〕1011×1001 〔4〕10111000÷1001〔5〕1011 ∧~1011 〔8〕1011 ⊕1001 1001〔6〕1011 ∨1001〔7〕1.10数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?1.11、计算机中有一个"01100001〞编码,如果把它认为是无符号数,它是10进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?1.12、简述Intel 80x86系列微处理器在指令集方面的发展.1.13、什么是DOS和ROM-BIOS?1.14、简述PC机最低1MB主存空间的使用情况.1.15、罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用.1.16、什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义.1.17、举例说明CF和OF标志的差异.溢出标志OF和进位标志CF是两个意义不同的标志进位标志表示无符号数运算结果是否超出X围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出X围,运算结果已经不正确•例1:3AH + 7CH=B6H无符号数运算:58+124=182,X围内,无进位有符号数运算: 58+124=182 ,X围外,有溢出•例2:AAH + 7CH=〔1〕26H无符号数运算:170+124=294,X围外,有进位有符号数运算:-86+124=28 ,X围内,无溢出1.18、字和双字在存储器中如何存放,什么是"小端方式〞?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?1.19、什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:〔1〕FFFFh:0 〔2〕40h:17h 〔3〕2000h:4500h 〔4〕B821h:4567h1.20、8086有哪4种逻辑段,各种逻辑段分别是什么用途?〔解答〕代码段〔Code Segment〕用来存放程序的指令序列.处理器利用CS : IP取得下一条要执行的指令•堆栈段〔Stack Segment〕确定堆栈所在的主存区域.处理器利用SS : SP操作堆栈中的数据•数据段〔Data Segment〕存放当前运行程序所用的数据.处理器利用DS : EA存取数据段中的数据•附加段〔Extra Segment〕是附加的数据段,也用于数据的保存.处理器利用ES : EA存取数据段中的数据第二章8086指令系统2.1已知DS = 2000H、BX = 0100H、SI = 0002H,存储单元[20100H] ~ [20103H]依次存放12 34 56 78H,[21200H] ~ [21203H]依次存放2A 4C B7 65H,说明下列每条指令执行完后AX寄存器的内容.〔1〕 mov ax,1200h ;AX=1200h〔2〕 mov ax,bx ; AX=0100h〔3〕 mov ax,[1200h] ; AX=4C2Ah〔4〕 mov ax,[bx] ; AX=3412h〔5〕 mov ax,[bx+1100h] ;AX=4C2Ah〔6〕 mov ax,[bx+si] ; AX=7856h〔7〕 mov ax,[bx][si+1100h] ; AX=65B7h2.2指出下列指令的错误<1> mov cx,dl 两操作数类型不匹配<2> mov ip,ax IP指令指针禁止用户访问<3> mov es,1234h 立即数不允许传给段寄存器<4> mov es,ds段寄存器之间不允许传送<5> mov al,300 两操作数类型不匹配<6> mov [sp],ax目的操作数应为[ BP ]<7> mov ax,bx+di源操作数应为[BX+DI]<8> mov 20h,ah立即数不能作目的操作数2.3已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址〔设为200H〕的连续区域中.请为如下程序段的每条指令加上注释,说明每条指令的功能和执行结果.lea bx,table ;获取table的首地址,BX=200Hmov al,8 ;传送欲转换的数字,AL=8xlat ;转换为格雷码,AL=12H2.4什么是堆栈,它的工作原则是什么,它的基本操作有哪两个,对应哪两种指令?堆栈是一种按"先进后出〞原则存取数据的存储区域.堆栈的两种基本操作是压栈和出栈,对应的指令是PUSH和POP.2.5已知SS = FFA0H、SP = 00B0H,画图说明执行下面指令序列时,堆栈区和SP的内容如何变化?mov ax,8057hpush axmov ax,0f79hpush axpop bx ;bx=0f79hpop [bx] ;DS:[0f79h]=8057h2.6给出下列各条指令执行后AL值,以与CF、ZF、SF、OF和PF的状态:mov al,89h AL=89h CF ZF SF OF PFadd al,al AL=12h 1 0 0 1 1add al,9dh AL=0afh 0 0 1 0 1cmp al,0bch AL=0afh 1 0 1 0 1sub al,al AL=00h 0 1 0 0 1dec al AL=0ffh 0 0 1 0 1inc al AL=00h 0 1 0 0 12.7 设X、Y、Z均为双字数据,分别存放在地址为X、X+2;Y、Y+2;Z、Z+2的存储单元中,它们的运算结果存入W单元.阅读如下程序段,给出运算公式.mov ax,Xmov dx,X+2add ax,Yadc dx,Y+2add ax,24adc dx,0sub ax,Zsbb dx,Z+2mov W,axmov W+2,dxW=X+Y+24-Z2.8请分别用一条汇编语言指令完成如下功能:〔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〕用位移量为0520H的直接寻址方式把存储器中的一个字与数3412H相加,并把结果送回该存储单元中. ADD WORD PTR [0520H],3412H〔5〕把数0A0H与AL寄存器的内容相加,并把结果送回AL中.ADD AL,0A0H2.9;设X、Y、Z、V均为16位带符号数,分别装在X、Y、Z、V存储单元中,阅读如下程序段,得出它的运算公式,并说明运算结果存于何处.为了避免与操作数地址混淆,将题中X,Y,Z,V 字操作数改为A,B,C,Dmov ax,X ;ax=Aimul Y ;dx,ax = A*B <将操作数看作符号数,以下同〕mov cx,axmov bx,dx ;bx,ax <-- dx,ax =A*Bmov ax,Z ;ax = Ccwd ;dx,ax =C 〔扩展符号后为双字〕add cx,axadc bx,dx ;bx,cx <-- bx,cx+dx,ax=A*B+Csub cx,540sbb bx,0 ;bx,cx<-- A*B+C-540mov ax, V ;ax= Dcwd ;dx,ax= D 〔扩展符号后为双字〕sub ax, cxsbb dx, bx ;dx,ax = dx,ax - bx,cx = D-<A*B+C-540>idiv X ;运算结果:[D-<A*B+C-540h>]/A ;ax存商,dx存余数2.10;〔1〕xchg [si],30h xchg的操作数不能是立即数〔2〕pop cs不能对CS直接赋值〔3〕 sub [si],[di] 两个操作数不能都是存储单元〔4〕push ah堆栈的操作数不能是字节量〔5〕 adc ax,ds adc的操作数不能是段寄存器〔6〕 add [si],80h没有确定是字节还是字操作〔7〕 in al,3fch in不支持超过FFH的直接寻址〔8〕 out dx,ah out只能以AL/AX为源操作数2.11; 给出下列各条指令执行后的结果,以与状态标志CF、OF、SF、ZF、PF的状态. 指令 AX的值CF OF SF ZF PFMov ax,1470h 1470h - - - - -And ax,ax 1470h0 0 0 00Or ax,ax 1470h 0 0 0 0 0Xor ax,ax 0 0 0 0 1 1Not ax 0ffffh - - - - -Test ax,0f0f0h 0ffffh 0 0 1 0 1注意: 1. mov, not指令不影响标志位2. 其他逻辑指令使CF=OF=0, 根据结果影响其他标志位.2.12; 假设例题2.32的程序段中,AX = 08H,BX = 10H,请说明每条指令执行后的结果和注意:1. 左移N次相当于乘于2的N次方,右左移N次相当于除乘于2的N次方.2. 移位指令根据是否移入"1〞到CF,设置CF,根据移位后的结果影响SF,ZF,PF.根据最高符号位是否改变设置OF,如改变OF=1.3. ‘u ’表示无定义,‘- ’表示无影响.2.13编写程序段完成如下要求:<1> 用位操作指令实现AL〔无符号数〕乘以10;不考虑进位mov bl,almov cl,3shl al,cladd al,bl ;shl bl,1add al,bl;考虑进位xor ah,ahmov bx,axmov cl,3shl ax,cladd ax,bx ;shl bx,1add ax,bx<2> 用逻辑运算指令实现数字0 ~ 9的ASCII码与非压缩BCD码的互相转换数字0~9的ASCII码是:30h~39h非压缩BCD码的0~9是:00h~09h方法一:and al,0fh ;实现ASCII到非压缩BCD码的转换or al,30h ;实现非压缩BCD码到ASCII的转换方法二:xor al,30h ;求反D5D4位,其他不变;即高4位为3,则变为0;高4位为0,则变为3mov cl,4again: shr dx,1 ;实现逻辑右移;采用"sar dx,1〞,则实现算术右移rcr ax,1dec cljnz again<3> 把DX:.AX中的双字右移4位MOV CL, 4SHR AX, CLMOV BL, DLSHR DX, CLSHL BL, CLOR AH, BL2.14; 已知AL = F7H〔表示有符号数-9〕,分别编写用SAR和IDIV指令实现的除以2的程序段,并说明各自执行后,所得的商是什么?〔1〕用sar编写mov al,0f7h ;-9送alsar al,1 ;结果:al=0fbh 即-5〔2〕用idiv编写mov al,0f7h ;-9送alcbw ;字节符号扩展位字mov bl,2 ;注意除数不可为立即数idiv bl ;结果:商为al=fch <-4>;余数为ah=ffh <-1>结论:符号数的除法用idiv 准确2.15、已知数据段500h ~600h处存放了一个字符串,说明下列程序段执行后的结果:mov si,600hmov di,601hmov ax,dsmov es,axmov cx,256stdrep movsb2.16、说明下列程序段的功能cldmov ax,0fefhmov cx,5mov bx,3000hmov es,bxmov di,2000hrep stosw2.17、指令指针IP是通用寄存器还是专用寄存器?有指令能够直接它赋值吗?哪类指令的执行会改变它的值?调试程序DEBUG环境下,如何改变IP数值?2.18、控制转移类指令中有哪三种寻址方式?2.19;什么是短转移short jump、近转移near jump和远转移far jump?什么是段内转移和段间转移?8086有哪些指令可以实现段间转移?短转移:指段内-128~127之间的转移,位移量用一个字节表示近转移:指段内±32K之间的转移,位移量用一个字表示远转移:指段间1MB X围的转移段内转移:指在同一个代码段内的转移,可以是短转移或者近转移段间转移:指转移到另外一个代码段,就是远转移8086/8088CPU的JMP、CALL和INT n指令可以实现段间转移2.20; 8086的条件转移指令的转移X围有多大?实际编程时,你如何处理超出X围的条件转移?8086的条件转移的转移X围:在当前指令地址的+127---- -128之内.如条件转移的转移X围超出此X围,可在此X围内安排一条无条件转移,再转移到X围外的目标地址.2.21; 假设DS=2000H,BX=1256H,SI=528FH,位移量TABLE=20A1H,[232F7H]=3280H,[264E5H]=2450H,试问执行下列段内间接寻址的转移指令后,转移的有效地址是什么?<1>JMP Bx ;转移的有效地址EA=BX=1256h<2>JMP tABLE[Bx] ;转移的有效地址EA=[ds:20a1h+1256h]=[232f7]=3280h<3>JMP [Bx][si] ;转移的有效地址EA=[ds:1256h+528fh]=264e5h=2450h2.22、判断下列程序段跳转的条件〔1〕 xor ax,1e1ehje equal;AX=1e1eh〔异或后为0〕〔2〕test al,10000001bjnz there;AL的D0或D7至少有一位为1〔3〕 cmp cx,64hthere;CX〔无符号数〕< 64h2.23; 设置CX = 0,则LOOP指令将循环多少次?例如mov cx,0 ;不循环,因为一进入循环就判cx=0? 如cx=0 就退出循环delay:loop delay循环次数是2的16次方,即2^16=65536.2.24 假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断:〔1〕若DX > DI,转到above执行cmp dx,dija above ;=jnbe above〔2〕若AX > SI,转到greater执行cmp ax,sijg greater ;=jnle greater〔3〕若CX = 0,转到zero执行cmp cx,0 jcxz zerojz zero〔4〕若AX-SI产生溢出,转到overflow执行;cmp ax,dijo overflow〔5〕若SI≤AX,转到less_eq执行;cmp si,axcmp ax,sijle less_eqjge less_eq〔6〕若DI≤DX,转到below_eq执行.cmp di,dxcmp dx,die below_eqjae below_eq2.25有一个首地址为array的20个字的数组,说明下列程序段的功能.mov cx,20mov ax,0mov si,axsum_loop:add ax,array[si]add si,2loop sum_loopmov total,ax; 答:将首地址为array得20个字的数组求和,并将结果存入total 单元中.2.26 按照下列要求,编写相应的程序段:<1> 起始地址为string的主存单元中存放有一个字符串〔长度大于6〕,把该字符串中的第1个和第6个字符〔字节量〕传送给DX寄存器.mov si,0mov dl,string[si] ;第1个字符送dl寄存器mov si,5mov dh,string[si] ;第6个字符送dh寄存器<2> 从主存buffer开始的4个字节中保存了4个非压缩BCD码,现按低〔高〕地址对低〔高〕位的原则,将它们合并到DX中.xor si,si ;si清零mov al,buffer[si] ;第一字节inc simov ah,buffer[si] ;第二字节mov cl,4shl ah,cl ;BCD码移到高半字节or al,ah ;组合成压缩BCD码mov dl,al ;存入dl寄..inc simov al,buffer[si] ;第三字节inc simov ah,buffer[si] ;第四字节mov cl,4shl ah,cl ;BCD码移到高半字节or al,ah ;组合成压缩BCD码mov dh,al ;存入dh寄..<3> 编写一个程序段,在DX高4位全为0时,使AX = 0;否则使AX = -1.test dx,0f000hjz zeromov ax,-1jmp donezero: mov ax,0done: ret<4> 有两个64位数值,按"小端方式〞存放在两个缓冲区buffer1和buffer2中,编写程序段完成buffer1-buffer2功能.lea bx,buffer1lea dx,buffer2mov cx,8 ;8个字节xor si,si ;si=0clc ;CF=0<5> 假设从B800h : 0开始存放有100个16位无符号数,编程求它们的和,并把32位的和保存在DX.AX中.mov ax,0b800hmov ds,ax ;段地址xor si,si ;地址偏移量si=0xor dx,dx ;和的高字dx=0mov cx,99 ;加的次数mov ax,[si] ;第一个数again: inc si ;指向下一个字单元inc siadd ax,[si] ;加下一个数jnc noc ;无进位转inc dx ;有进位dx=dx+1noc: dec cx ;次数-1jnz cx,again ;非0继续加ret<6> 已知字符串string包含有32KB内容,将其中的’$’符号替换成空格.mov si,offset stringmov cx,8000h ;32k=2^15=8000hagain: cmp [si],’$’jnz nextmov [si],20h ;if [si]=’$’[si]<-- ’’next: inc siloop again<7> 有一个100个字节元素的数组,其首地址为array,将每个元素减1〔不考虑溢出〕存于原处.xor si,si ;si<--0mov cx,100 ;循环次数again: dec array[si]dec cxjnz again<8> 统计以’$’结尾的字符串srting的字符个数.xor si,si ;si<--0coun: cmp string[si],’$’je doneinc sijmp coundone: ret2.27; 对下面要求,分别给出3种方法,每种方法只用一条指令.<1>使CF=0 :clc ;and ax,ax ;or ax,ax<2>使AX=0 :xor ax,ax ;and ax,0 ;mov ax,0<3>同时使AX=0和CF=0:and ax,0 ;xor ax,ax ;sub ax,ax2.28、参照本习题的示意图,分析调用序列,画出每次调用与返回时的堆栈状态.其中CALL前是该指令所在的逻辑地址;另外,段内直接调用指令的机器代码的字节数为3,段间直接调用指令则为5个字节.2.29已知AX 、BX存放的是4位压缩BCD表示的十进制数,请说明如下子程序的功能和出口参数.add al,bldaaxchg al,ahadc al,bhdaaxchg al,ahret压缩BCD码加法:AX←AX+BX出口参数:AX=BCD码和2.30、AAD指令是用于除法指令之前,进行非压缩BCD码调整的.实际上,处理器的调整过程是:AL←AH×10+AL,AH←0.如果指令系统没有AAD指令,请用一个子程序完成这个调整工作.2.31、解释如下有关中断的概念:〔1〕内部中断和外部中断〔2〕单步中断和断点中断〔3〕除法错中断和溢出中断〔4〕中断向量号和中断向量表2.32、试比较INT n和段间CALL指令、IRET和段间RET指令的功能.2.33、什么是系统功能调用?汇编语言中,它的一般格式是怎样的?2.34; 补充例2.38,当有溢出时显示"Error! Overflow!〞,无溢出时显示"OK〞.okmsg db ‘OK’,‘$’errmsg db ‘Error! Overflow !’,‘$’…mov ax,Xsub ax,Yjo overflowmov dx,offset okmsgjmp nextoverflow: mov dx,errmsgnext: mov ah,9int 21h错误:mov ax,Xsub ax,Yjo overflowmov dx,offset okmsgokmsg db ‘OK’,‘$’mov dx,errmsg ;错误1:数据定义在代码中mov ah,9int 21hoverflow: errmsg db ‘Error! Overflow !’,‘$’mov dx,errmsg ; 错误2:缺少JMP指令mov ah,9int 21h2.35、补充例2.39,显示"1〞的个数;注意首先将个数转换为ASCII码.2.36、先提示输入数字"Input Number:0 ~ 9〞,然后在下一行显示输入的数字,结束;如果不是键入了0 ~ 9数字,就提示错误"Error!〞,继续等待输入数字.2.37 从键盘输入一个字符串〔不超过255个〕,将其中的小写字母转换成大写字母,然后按原来的顺序在屏幕上显示.;xt237.asm.model small.stack.dataarray db 255db 0array1 db 255 dup<'$'>array2 db 0dh,0ah,'$'.code.startupmov ah,0ah ; 键盘输入字符串mov dx,offset arrayint 21hmov dx,offset array2 ; 回车换行mov ah,09hint 21hmov bx,offset array1again: mov al,[bx]cmp al,'$'jz donecmp al,'a' ; 小于a和大于z的字符不是小写字母nextcmp al,'z'ja nextsub al,20h ; 在a和z之间的字符才是小写字母,转换为大写mov [bx],al ; 保存到原位置next: inc bxjmp againdone: mov dx,offset array1mov ah,09hint 21h.exit 0end2.38、指令对状态标志的作用可以分成多种情况,例如无影响、无定义、按结果影响、特别说明的影响等,你能区别这些情况吗?分别用具体的指令来说明.2.39、8086指令系统分成哪6个功能组?各组主要包含什么指令,举例说明.2.40、总结8086指令系统所采用的各种寻址方式,包括一般的数据寻址、外设数据寻址、堆栈数据寻址、串操作数据寻址、转移指令目的地址的寻址等,并举例说明.另外找的!第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成与各部分作用.〔解答〕CPU:包括运算器、控制器和寄存器组.运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据.存储器:是计算机的记忆部件,它用来存放程序以与程序中所涉与的数据.外部设备:实现人机交换和机间的通信.〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快.辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢.RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息.存储器由大量存储单元组成.为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口.KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位.〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序.〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在"时间〞和"空间〞两方面最有效的程序.汇编语言与高级语言相比的缺点:由于与处理器密切相关导致通用性差、可移植性差,汇编语言功能有限,又涉与寄存器、主存单元等硬件细节,编写汇编语言比较繁琐,调试起来也比较困难,编译程序产生的目标程序往往比较庞大、程序难以优化,运行速度慢.〔习题1.5〕将下列十六进制数转换为二进制和十进制表示〔1〕FFH 〔2〕0H 〔3〕5EH 〔4〕EFH〔5〕2EH 〔6〕10H 〔7〕1FH 〔8〕ABH〔解答〕〔1〕FFH 11111111B 255D〔2〕0H 0B 0D〔3〕5EH 1011110B 94D〔4〕EFH 11101111B 239D〔5〕2EH 101110B 46D〔6〕10H 10000B 16D〔7〕1FH 11111B 31D〔8〕ABH 10101011B 171D〔习题1.6〕将下列十进制数转换为BCD码表示〔1〕12 〔2〕24 〔3〕68 〔4〕127〔5〕128 〔6〕255 〔7〕1234 〔8〕2458〔解答〕〔1〕12 00010010〔2〕24 00100100〔3〕68 01101000〔4〕127 000100100111〔5〕128 000100101000〔6〕255 001001010101〔习题1.7〕将下列BCD码转换为十进制数〔1〕10010001 〔2〕10001001 〔3〕00110110 〔4〕10010000〔5〕00001000 〔6〕10010111 〔7〕10000001 〔8〕00000010〔解答〕〔1〕91〔2〕89〔3〕36〔4〕90〔5〕08〔6〕97〔7〕81〔8〕02〔习题1.8〕将下列十进制数分别用8位二进制数的原码、反码和补码表示〔1〕0 〔2〕-127 〔3〕127 〔4〕-57〔5〕126 〔6〕-126 〔7〕-128 〔8〕68〔解答〕〔1〕0 +0 00000000 00000000 00000000-0 10000000 11111111 00000000〔2〕-127 11111111 10000000 10000001〔3〕127 01111111 01111111 01111111〔4〕-57 10101111 11010000 11010001〔5〕126 01111110 01111110 01111110〔6〕-126 11111110 10000001 10000010〔7〕-128 10000000〔8〕68 01000100 01000100 01000100〔习题1.9〕完成下列二进制数的运算〔1〕1011+1001 〔2〕1011-1001 〔3〕1011×1001 〔4〕10111000÷1001 〔5〕1011 ∧1001 〔6〕1011 ∨1001 〔7〕~1011 〔8〕1011 ? 1001 〔解答〕〔1〕1011+1001=10100〔2〕1011-1001=0010〔3〕1011×1001=1100011〔4〕10111000÷1001=10100,余数1000〔5〕1011 ∧1001=1001〔6〕1011 ∨1001=1011〔7〕~1011=0100<8> 1011?1001=0010<?代表异或>〔习题1.10〕数码0~9、大写字母A~Z、小写字母a~z对应的ASCII码分别是多少?ASCII码为0dh、0ah对应的是什么字符?〔解答〕数码0~9:30H~39H大写字母A~Z:41H~5AH小写字母a~z:61H~7AHASCII码为0dh、0ah分别对应回车和换行控制字符.〔习题1.11〕计算机中有一个"01100001〞编码,如果把它认为是无符号数,它是十进制什么数?如果认为它是BCD码,则表示什么数?又如果它是某个ASCII码,则代表哪个字符?〔解答〕十进制无符号数:01100001B=61H=97BCD码:61ASCII码:a〔习题1.12〕简述Intel 80x86系列微处理器在指令集方面的发展.〔解答〕1978年Intel,正式推出了16位8086CPU,1979年Intel推出了准16位微处理器8088,随后,Intel 推出了80186/80188,80186/80188指令系统比8086指令系统新增了若干条实用的指令,涉与堆栈操作、移位指令、过程指令和边界检测与乘法指令,1982年Intel推出80286 CPU, 80286指令系统包括全部80186指令与新增的保护指令15条,其中有些保护方式在实方式下也可以使用,1985年,Intel80x86推出微处理器地进入第三代80386 CPU, 80386指令系统在兼容原来16位指令系统的基础上,全面升级为32位,还新增了有关位操作、条件设置指令以与控制、调试和测试寄存器的传送指令等,1989年,Intel推出了80486CPU,80486将浮点处理单元FPU集成进来,还采用了精简指令集计算机技术RISC和指令流水线方式,还新增了用于多处理器和内部Cache操作的6条指令,1993年Intel制成了俗称586的微处理器,取名Pentium.Pentium仍为32位结构,地址总线为32位,对常用的简单指令用硬件实现,重新设计指令的微代码等,Pentium新增了一条8字节比较交换指令和一条处理器识别指令,以与4条系统专用指令,1996年推出了MMX Pentium,新增了57条多媒休指令,1995年Intel推出Pentium Pro新增了3条指令,1999年推出了PentiumⅢ新增了70条SSE指令,20##推出的Pentium4新增了76条SSE2指令〔习题1.13〕什么是DOS和ROM-BIOS?〔解答〕DOS是Diskette Operating system的缩写,意思是磁盘操作系统,DOS主要是面向磁盘的系统软件,说得简单些,就是人与机器的一座桥梁,是罩在机器硬件外面的一层"外壳〞,是1981~1995年的个人电脑上使用的一种主要的操作系统.BIOS〔Basic Input/Output System〕即基本输入输出系统,通常是固化在只读存储器〔ROM〕中,所以又称为ROM-BIOS.它直接对计算机系统中的输入、输出设备进行设备级、硬件级的控制,是连接软件程序和硬件设备之间的枢纽.ROM-BIOS是计算机系统中用来提供最低级、最直接的硬件控制的程序.〔习题1.14〕简述PC机最低1MB主存空间的使用情况.〔解答〕〔1〕基本RAM区<00000H—9FFFFH>该区共640KB,由DOS进行管理.在这个区域中操作系统要占用掉一部分低地址空间,其它则向用户程序开放.〔2〕保留区RAM〔A0000H--BFFFFFH〕该区为系统安排的"显示缓冲存储区〞,共126KB,是显卡上的芯片提供支持,用于存放屏幕显示信息.但这部分地址空间实际上并没有全部使用.〔3〕扩展区ROM〔C0000H--DFFFFH〕该区128KB,由接口卡上的芯片提供支持,用于为系统不直接支持的外设安排设备驱动程序.用户固化的程序就可[安排在这一段,系统的会对它进行确认和连接.〔4〕系统区ROM〔E0000H--FFFFFH〕该区共128KB,由系统占用,它主要提供ROM--BIOS 程序,基本输入输出程序BIOS,是操作系统的重要组成部分,主要用来驱动输入输出设备,也负责系统的上电检测,磁盘引导等初始化操作,在ROM--BIOS中还有CMOS微机设置程序以与使用的字符图符信息等内容.〔习题1.15〕罗列8086CPU的8个8位和16位通用寄存器,并说明各自的作用.〔解答〕〔1〕数据寄存器:AX称为累加器,使用频度最高,用于算术、逻辑运算以与与外设传送信息等;BX称为基址寄存器,常用做存放存储器地址;CX称为计数器,作为循环和串操作等指令中的隐含计数器;DX称为数据寄存器,常用来存放双字长数据的高16位,或存放外设端口地址.〔2〕指针与变址寄存器包括SI,DI,BP,S P,四个寄存器,常用于存储器寻址时提供地址.SI是源变址寄存器,DI是目的变址寄存器,一般与DS联用确定数据段和附加段中某一存储单元地址,在串指令中,SI与DS联用、DI和ES联用,分别寻址数据段和附加段;同时,在串指令中,SI和DI还都具有自动增量或减量的功能.S P,为堆栈指针寄存器,指示栈顶的偏移地址;BP为基地址指针寄存器,表示堆栈段中的基地址.S P与BP寄存器均可与SS段寄存器联合使用以确定堆栈段中的存储单元地址.〔习题1.16〕什么是标志,它有什么用途?状态标志和控制标志有什么区别?画出标志寄存器FLAGS,说明各个标志的位置和含义.〔解答〕标志用于反映指令执行结果或控制指令执行形式.它是汇编语言程序设计中必须特别注意的一个方面,状态用来记录运行的结果的状态信息,许多指令的执行都将相应地设置它,控制标志位可由程序根据需要用指令设置,用来控制处理器执行指令的方式.CF是进位标志;ZF 是零标志;SF是符号标志;PF奇偶标志;OF溢出标志;AF辅助进位标志;DF方向标志;IF中断允许标志;TF陷阱标志.〔习题1.17〕举例说明CF和OF标志的差异.〔解答〕溢出标志OF和进位标志CF是两个意义不同的标志.进位标志表示无符号数运算结果是否超出X围,运算结果仍然正确;溢出标志表示有符号数运算结果是否超出X围,运算结果已经不正确.例1:3AH + 7CH=B6H无符号数运算:58+124=182,X围内,无进位有符号数运算:58+124=182 ,X围外,有溢出例2:AAH + 7CH=〔1〕26H无符号数运算:170+124=294,X围外,有进位有符号数运算:-86+124=28 ,X围内,无溢出〔习题1.18〕字和双字在存储器中如何存放,什么是"小端方式〞?对字和双字存储单元,什么是它们的对齐地址?为什么要对齐地址?〔解答〕字或双字在存储器中占相邻的2个或4个存储单元;存放时,低字节存入低地址,高字节存入高地址;字或双字单元的地址用它的低地址来表示.80x86处理器采用的这种"低对低,高对高〞的存储形式,被称为"小端方式〞;将字单元安排在偶地址,双字节单元安排在模4地址,被称为"地址对齐方式〞因为对于不对齐地址的数据,处理器访问时,需要额外的访问时间,所以通常应该将数据的地址对齐,以取得较高的存取速度.〔习题1.19〕什么是8086中的逻辑地址和物理地址?逻辑地址如何转换成物理地址?请将如下逻辑地址用物理地址表达:〔1〕FFFFh:0 〔2〕40h:17h 〔3〕2000h:4500h 〔4〕B821h:4567h〔解答〕在8086处理器中,对应每个物理存储单元都有一个唯一的20位编号,就是物理地址,从00000H~FFFFFH.在8086内部和用户编程时,采用的段基地址: 段内偏移地址形式称为逻辑地址.将逻辑地址中的段地址左移二进制4位〔对应16进制是一位,即乘以16〕,加上偏移地址就得到20位物理地址如下逻辑地址用物理地址表达:〔1〕FFFFh:0=FFFF0H〔2〕40h:17h=00417H〔3〕2000h:4500h=24500H〔4〕B821h:4567h=BC777H 〔不要算错〕〔习题1.20〕8086有哪4种逻辑段,各种逻辑段分别是什么用途?〔解答〕代码段〔Code Segment〕用来存放程序的指令序列.处理器利用CS : IP取得下一条要执行的指令.堆栈段〔Stack Segment〕确定堆栈所在的主存区域.处理器利用SS : SP操作堆栈中的数据.数据段〔Data Segment〕存放当前运行程序所用的数据.处理器利用DS : EA存取数据段中的数据.附加段〔Extra Segment〕是附加的数据段,也用于数据的保存.处理器利用ES : EA存取数据段中的数据〔习题1.21〕数据的默认段是哪个,是否允许其他段存放数据?如果允许,如何实现,有什么要求?〔解答〕数据的默认段是安排在数据段,也经常安排在附加段,尤其是串操作的目的区必须是附加段,允许其它段存放数据,数据的存放比较灵活的,实际上可以存放在任何一种逻辑段中,这时,只要明确指明是哪个逻辑段就可以了.〔习题1.22〕什么是操作码、操作数和寻址方式?有哪三种给出操作数的方法?〔解答〕操作码说明计算机要执行哪种操作,它是指令中不可缺少的组成部分,操作数是指令执行的参与者,也是各种操作的对象,我们把寻找数的方式叫做操作数的寻址方式.给出操作数的三种方法是直接给出,间接给出,隐藏操作数方式给出.〔习题1.23〕什么是有效地址EA?8086的操作数如果在主存中,有哪些寻址方式可以存取它?〔解答〕。
【汇编】16进制转换成10进制(三种方法)
【汇编】16进制转换成10进制(三种⽅法)汇编语⾔程序:16进制转换成10进制(三种⽅法)1;天⽔浪客(Gouki Jiang) , 16进制to10进制例题 2007.5.182 STACK SEGMENT PARA STACK3 S_AREA DW 100H DUP(?)4 S_TOP EQU $-S_AREA5 STACK ENDS67 DATA SEGMENT PARA8 VALUE DW 0EB9AH ;0603149 RESULT DB 5 DUP(?),'$'10 DATA ENDS1112 CODE SEGMENT PARA13 ASSUME CS:CODE,DS:DATA,SS:STACK1415 MAIN PROC FAR16MOV AX,DATA17MOV DS,AX18MOV AX,STACK19MOV SS,AX20MOV SP,S_TOP21MOV CX,522MOV AX,VALUE23MOV BX,1024MOV DI,OFFSET RESULT+42526JYB:XOR DX,DX27DIV BX28OR DL,30H29MOV BYTE PTR [DI],DL30DEC DI31 LOOP JYB32MOV DX,OFFSET RESULT33MOV AH,934INT 21H3536EXIT:MOV AX,4C00H37INT 21H38 MAIN ENDP39 CODE ENDS40 END MAIN4142;---------------------------------------------4344;天⽔浪客(Gouki Jiang) , 16进制to10进制倒除 2007.5.1845 STACK SEGMENT PARA STACK46 DW 100H DUP(?)47 STACK ENDS4849 DATA SEGMENT PARA50 VALUE DW 0EB9AH ;06031451 DATA ENDS5253 CODE SEGMENT PARA54 ASSUME CS:CODE,DS:DATA,SS:STACK5556 MAIN PROC FAR57MOV AX,DATA58MOV DS,AX59MOV CX,560MOV AX,VALUE61MOV BX,106263JYB1:XOR DX,DX64DIV BX65OR DL,30H66PUSH DX67 LOOP JYB168MOV CX,569JYB2:POP DX70MOV AH,271INT 21H72 LOOP JYB273EXIT:MOV AX,4C00H74INT 21H75 MAIN ENDP76 CODE ENDS77 END MAIN78;-----------------------------------------------7980;天⽔浪客(Gouki Jiang) , 16进制to10进制顺除 2007.5.1881 STACK SEGMENT PARA STACK82 DW 100H DUP(?)83 STACK ENDS8485 DATA SEGMENT PARA86 VALUE DW 0EB9AH ;06031487 DIVISOR DW 10000,1000,100,10,188 DATA ENDS8990 CODE SEGMENT PARA91 ASSUME CS:CODE,DS:DATA,SS:STACK9293 MAIN PROC FAR94MOV AX,DATA95MOV DS,AX96MOV CX,597MOV AX,VALUE98MOV SI,OFFSET DIVISOR99100JYB:XOR DX,DX101DIV WORD PTR[SI]102PUSH DX103OR AL,30H104MOV DL,AL105MOV AH,2106INT 21H107INC SI108INC SI109POP AX110 LOOP JYB111112EXIT:MOV AX,4C00H113INT 21H114 MAIN ENDP115 CODE ENDS116 END MAIN117118;-------------------------------------。
十六进制——精选推荐
0hex =0dec =0oct 00001hex =1dec =1oct 00012hex =2dec =2oct 00103hex =3dec =3oct 00114hex =4dec =4oct 01005hex =5dec =5oct 01016hex =6dec =6oct01107hex =7dec =7oct 01118hex =8dec =10oct 10009hex =9dec =11oct 1001A hex =10dec =12oct 101B hex =11dec =13oct 1011C hex =12dec =14oct 1100D hex =13dec =15oct 1101E hex =14dec =16oct 1110F hex =15dec =17oct 1111⼗六进制⼗六进制⼗六进制(简写为hex 或下标16)在数学中是⼀种逢16进1的进位制,⼀般⽤数字0到9和字母A 到F 表⽰(其中:A~F 即10~15)。
例如⼗进制数79,在⼆进制写作01001111,在16进制写作4F (4 = 0100, F = 1111)。
在历史上,中国曾经在重量单位上使⽤过16进制,⽐如,规定16两为⼀⽄。
现在的16进制则普遍应⽤在计算机领域,这是因为将4个位元(Bit )化成单独的16进制数字不太困难。
1字节可以表⽰成2个连续的16进制数字。
可是,这种混合表⽰法容易令⼈混淆,因此需要⼀些字⾸、字尾或下标来显⽰。
⽬录[隐藏]1 表⽰⽅式1.1 表⽰⽅法表2 ⼗六进制的分数3 ⼗六进制的转换3.1 数学的计算⽅法3.1.1 ⼗进制转⼗六进制3.2 编程中的函式3.2.1 Visual Basic 3.2.2 Python 3.2.3 Perl4 外部链接[编辑] 表⽰⽅式不同电脑系统、编程语⾔对于16进制数值有不同的表⽰⽅式:Ada 与VHDL ⽤所基于的“数字引证”把16进制数包起来,例如“16#5A3#”。
课程设计报告--汇编程序设计(进制转换)
课程设计报告--汇编程序设计(进制转换)汇编语言课程设计报告:代码与数制之间的转换内容提要:本课程设计的主要内容是代码与数制之间的转换~程序的主要功能如下:1. 将十六进制数转换成其对应的ASCII码2. 将ASCII码转换成其对应的十六进制数3. 实现二进制数与十六进制数之间相互转换4. 实现十进制数与二进制数之间相互转换5. 实现十六进制数与十进制数之间相互转换数制转换是计算机科学技术中最为基础的运算~在日常生活中~人们习惯性地使用十进制数进行计算。
而在计算机内部~所有的信息,数、字符、汉字、计算机的指令、状态,都是用二进制数来表示的。
在计算机中~二进制数的运算、处理比十进制数的更容易实现。
有时为了缩短书写~在计算机中还采用十六进制数。
所以~我们需要把数从二进制数形式转换成其他进制的形式~甚至在不同的进位制之间进行转换。
- 1 -汇编语言课程设计报告:代码与数制之间的转换目录一、前言〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.1 程设计的目的〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.2 代码与数制之间的转换程序的意义〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 1.3 数制之间的转换程序的主要功能〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3正文〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 二、2.1 代码与数制之间相互转换程序的设计大纲〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃3 2.2 代码与数制之间相互转换程序的结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃4 2.3 友好交互界面结构图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃5 2.4 程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.1 主程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.2 键盘输入子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃62.4.3 ASC码转16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃72.4.4 16进制转ASC进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.5 2,16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃82.4.6 2?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.7 16?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃92.4.8 2~10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.9 2?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃102.4.10 10?2进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.11 10~16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃112.4.12 10?16进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃122.4.13 16?10进制子程序流程图〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃12三、源程序及其注释〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃13四、课程设计体会〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29五、参考文献〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃〃29- 2 -汇编语言课程设计报告:代码与数制之间的转换课程设计题目:代码与数制之间的转换一、前言1.1 课程设计的目的, 加深对汇编语言课程理论方面的理解, 通过编写一定规模和难度的程序,进行一次较全面的汇编编程训练,提高分析问题和解决问题的能力, 提高调试程序的能力1.2 代码与数制之间的转换程序的意义数制转换是计算机科学技术中最为基础的运算,在日常生活中,人们习惯性地使用十进制数进行计算。
十六进制与十进制互换
30(十六进)=48(十进)
只要记住如果你看到0x,$,或者h的标记,这些数字就基本确定是十六进制数。
下一课:Firecracker
十六进制与十进制互换
FEED,DEAF,DEAD,BEAD和ABE有多大?(注:这里全部是十六进制数)
十进制数
当你想到十进制数时,你可能会想到像12.4382或0.625这样的数。
这不是我在这里想要说的。我不是在谈论有十进制点或十进制符号的数。我说的十进制数,意味着以十为基础的0数。
在日常生活中,你和我以十为基础,就是我们所知的“十进制数系统”。因为十进制参考数字10,而且我们人类有十只手指十只脚趾。十被编入了我们的数字系统。例如,一起选择数字234,16,和9001。我们可以把这些数字分成10的乘积:
(图)
能转换的最大十进制数是9,223,372,036,854,775,807,最小的是-9,223,372,036,854,775,808。
十六进制数的标记
在其他的指导,文档文件和程序中,你会找到几个典型的标记来区分十六进制数和十进制数。
0x312
$312
312h
为确保其他人懂得你在用十六进制数而不是十进制数,你可以使用以上三种标记。你可以在十六进制数前(在这个情况下,是十六进制的312)使用前缀,用“0x”或者美元的标志“ห้องสมุดไป่ตู้”。可选的,在数字后面加字母“h”也是有用的。
注意“A”在十六进制中实际上表示10。10在十六进制中表示16。十六进制的1F在十进制中表示31,十六进制的20表示十进制的32,等等。
这里有一些十六进制数和它们的十进制转换:
十六进制:0,1,2,3,4,5,6,7,8,9, A, B, C, D, E, F,10,11,12,13,14,15,16,17,18,19
计算机组成原理与汇编语言程序设计课后习题及解答(详解)
计算机组成原理与汇编语言程序设计课后习题及解答徐洁,俸远祯电子工业出版社第1章习题一1.什么是程序存储工作方式?答:计算机的工作方式——存储程序工作方式。
即事先编写程序,再由计算机把这些信息存储起来,然后连续地、快速地执行程序,从而完成各种运算过程。
2.采用数字化方法表示信息有哪些优点?用数字化方法表示信息的优点:(1)抗干扰能力强, 可靠性高。
(2)依靠多位数字的组合,在表示数值时可获得很宽的表示范围以及很高的精度。
(3)数字化的信息可以存储、信息传送也比较容易实现。
(4)可表示的信息类型与范围及其广泛,几乎没有限制。
(5)能用逻辑代数等数字逻辑技术进行信息处理,这就形成了计算机硬件设计的基础。
3.如果有7×9点阵显示出字符A的图像,请用9个七位二进制代码表示A的点阵信息。
4.数字计算机的主要特点是什么?1. (1)能在程序控制下自动连续地工作;(2|)运算速度快;(3)运算精度高;(4)具有很强的信息存储能力;(5)通用性强,应用领域及其广泛。
5.衡量计算机性能的基本指标有哪些?答:衡量计算机性能的基本指标:(1)基本字长——参加一次运算的数的位数;(2)数据通路宽度——数据总线一次能并行传送的位数;(3)运算速度——可用①CPU的时钟频率与主频,②每秒平均执行指令数,③典型四则运算的时间来表示。
(4)主存储器容量——可用字节数或单元数(字数)×位数来表示。
(6)配备的外围设备及其性能。
(7)系统软件配置。
7.系统软件一般包括哪些部分?列举你所熟悉的三种系统软件。
系统软件一般包括操作系统,编译程序、解释程序、各种软件平台等。
例如WINDOWS98操作系统,C 语言编译程序等,数据库管理系统。
8.对源程序的处理有哪两种基本方式?对源程序的处理通常有两种处理方式:解释方式和编译方式。
第2章习题二1.将二进制数(101010.01)2 转换为十进制数及BCD码。
解:(101010.01)2 = (42.25)10 = (01000010.00100101)BCD2.将八进制数(37.2)8转换为十进制数及BCD码.解:(37.2)8 = (31.25)10 =(00110001.00100101)BCD3.将十六进制数(AC.E)转换为十进制数及BCD码.解: (AC.E)16 =(172.875)10 = (000101110010.100001110101)BCD4.将十进制数(75.34)10转换为8位二进制数及八进制数、十六进制数。
汇编语言(第2版)-郑晓薇-汇编语言习题-测验题答案
汇编语言(第2版),郑晓薇汇编语言各章习题、测试题答案习题一1.1 分别将下列二进制数作为无符号数和带符号数转换为十进制和十六进制数11010011 01110111 10000011 00101111 101010101.2 十六进制运算1A52H+4438H 3967H-2D81H 37H×12H 1250H×4H1.3 将十进制数变为8位补码并做运算(结果用二进制、十六进制、十进制表示)29+53 73-24 -66+82 -102-151.4 用压缩BCD码计算(结果用二进制、BCD码、十进制表示)29+53 73-24 66+18 132+751.5 符号位扩展(字节扩展为字,字扩展为双字)20A3H 94H 3456H 7FH EC00H1.6 若机器字长为16位,其无符号数表示范围是多少?带符号数表示范围是多少?分别用十进制和十六进制表示。
1.7 写出下列十六进制数所能代表的数值或编码:(1)38H (2)FFH (3)5AH (4)0DH1.8 将下列十进制数分别转换为二进制、十六进制、二进制补码、压缩BCD码和ASCII码:(1)108 (2)46 (3)-15 (4)2541.9 写出下列算式的8位二进制运算结果,标志位CF、SF、ZF、OF分别是什么值?(1)56+63 (2)83-45 (3)-74+29 (4)-12-371.10 查表,指出ASCII码0DH、0AH、07H、1BH、20H、60H、50H、70H对应的控制字符。
测验一单选题:1.已知X=76,则[X]补= 。
A. 76HB. 4CHC.0B4HD.0CCH2.已知[X]补=80H,则X= 。
A. 80HB. 0C. 0FFHD. -80H3.已知[X]补=98H,则[X]补/2= 。
A. 0CCHB.4CHC. 49HD. 31H4.已知X=78,Y=-83,则[X+Y]补= 。
A. 0F5HB. 0A1HC. 0FBHD. 65H5.将124转换成十六进制数的结果是A. 7CHB. 7DHC. 7EHD. 7BH6.将93H看成一个压缩BCD码,其结果是A. 10010101B. 10010011C.10000011D.100000017.45转换成二进制数是A.10101101B.00111101C. 00101101D. 100111018.6CH转换成十进制数是A. 118B. 108C. 48D. 689.将93H扩展为字的结果是A. FF93HB. 0093HC. 1193HD. 1093H10.56的压缩BCD码是A. 38HB. 56HC. 0506HD. 3536H11.ASCII中的47H表示的字符是A. “7”B. “G”C. “g”D. “E”12.十进制数-128的8位二进制数的补码为A. 11111110B. 01111111C. 10000000D. 1000000113.下列为补码表示,其中真值最大的是A. 10001000B.11111111C.00000000D.0000000114.十六进制数88H,可表示成下面几种形式,请找出错误的表示A. 无符号十进制数136B. 带符号十进制数-120C. 压缩BCD码十进制数88D. 8位二进制数-8的补码15.计算机对字符、符号采用统一的二进制编码。
汇编语言程序设计(第四版)【课后答案】
汇编语言程序设计第四版【课后习题答案】第1章汇编语言基础知识〔习题1.1〕简述计算机系统的硬件组成及各部分作用。
〔解答〕CPU:包括运算器、控制器和寄存器组。
运算器执行所有的算术和逻辑运算;控制器负责把指指令逐条从存储器中取出,经译码分析后向机器发出各种控制命令,并正确完成程序所要求的功能;寄存器组为处理单元提供所需要的数据。
存储器:是计算机的记忆部件,它用来存放程序以及程序中所涉及的数据。
外部设备:实现人机交换和机间的通信。
〔习题1.2〕明确下列概念或符号:主存和辅存,RAM和ROM,存储器地址和I/O端口,KB、MB、GB和TB。
〔解答〕主存又称内存是主存储器的简称,主存储器存放当前正在执行的程序和使用的数据,CPU可以直接存取,它由半导体存储器芯片构成其成本高、容量小、但速度快。
辅存是辅助存储器的简称,辅存可用来长期保存大量程序和数据,CPU需要通过I/O接口访问,它由磁盘或光盘构成,其成本低、容量大,但速度慢。
RAM是随机存取存储器的英语简写,由于CPU可以从RAM读信息,也可以向RAM写入信息,所以RAM也被称为读写存储器,RAM型半导体存储器可以按地址随机读写,但这类存储器在断电后不能保存信息;而ROM中的信息只能被读出,不能被修改,ROM型半导体通常只能被读出,但这类存储器断电后能保存信息。
存储器由大量存储单元组成。
为了区别每个单元,我们将它们编号,于是,每个存储单元就有了一个存储地址,I/O接口是由一组寄存器组成,为了区别它们,各个寄存器进行了编号,形成I/O地址,通常称做I/O端口。
KB是千字节、MB是兆字节、GB是吉字节和TB是太字节,它们都是表示存储器存储单元的单位。
〔习题1.3〕什么是汇编语言源程序、汇编程序、目标程序?〔解答〕用汇编语言书写的程序就称为汇编语言源程序;完成汇编工作的程序就是汇编程序;由汇编程序编译通过的程序就是目标程序。
〔习题1.4〕汇编语言与高级语言相比有什么优缺点?〔解答〕汇编语言与高级语言相比的优点:由于汇编语言本质就是机器语言,它可以直接地、有效地控制计算机硬件,因而容易产生运行速度快,指令序列短小的高效目标程序,可以直接控制计算机硬件部件,可以编写在“时间”和“空间”两方面最有效的程序。
微机原理、汇编语言与接口技术 周杰英 张萍 习题答案汇总
第1章绪论习题与参考答案(部分)1.把下列二进制数转换成十进制数、十六进制数及BCD码形式。
(1)10110010B =(2)01011101.101B =解:(1) 10110010B = 178D = B2H = (0001 0111 1000)BCD (2) 01011101.101B = 93.625D = 5D.AH= (1001 0011.0110 0010 0101)BCD2.把下列十进制数转换成二进制数。
(1)100D =(2)1000D =(3)67.21D =解:(1)100D = 01100100B(2) 1000D = 1111101000B(3) 67.21D = 1000011.0011B3.把下列十六进制数转换成十进制数、二进制数。
(1)2B5H =(2)4CD.A5H =解:(1)2B5H = 693D = 0010 1011 0101B(2)4CD.A5H = 1229.6445D = 0100 1100 1101.1010 0101 B4.计算下列各式。
(1)A7H+B8H =(2)E4H-A6H =解:(1) A7H+B8H = 15FH(2) E4H-A6H = 3EH5.写出下列十进制数的原码、反码和补码。
(1) +89(2) -37解:(1) [+89 ] 原码、反码和补码为: 01011001B(2) [-37] 原码 = 10100101 B[-37] 反码 = 11011010 B[-37] 补码 = 11011011 B6.求下列用二进制补码表示的十进制数(1)(01001101)补 =(2)(10110101)补 =解:(1)(01001101)补 = 77D(2)(10110101)补 = -75D7.请用8位二进制数写出下列字符带奇校验的ASCII码。
(1)C: 1000011 (2)O: 1001111(3)M: 1001101 (4)P: 1010000解:(1)C:0 1000011 (2)O: 0 1001111(3)M:1 1001101 (4)P: 1 10100008.请用8位二进制数写出下列字符带偶校验的ASCII码。
汇编语言进制转换之16进制转10进制
汇编语⾔进制转换之16进制转10进制 使⽤8086汇编,输⼊⼀个16进制的数,程序把该16进制数转换为相应的10进制数输出程序运⾏截图:要实现这样⼀个程序,思路可以是这样的: 1.由于我们读⼊的键盘输⼊是ASCII码表⽰的,且输⼊⼀个字符便得到⼀个ASCII码,如输⼊ab,程序中可以得到61h和62h。
现在的问题是怎么把这些输⼊的字符表⽰成⼀个完整的数。
对于这个问题,我们可以把每次输⼊的字符的ASCII码先转换为对应的数,0-9之间的数,根据ASCII码表发现可以⽤ ASCII码减30h 得到0-9对应的⼗六进制数值,对于a-b,⽤ASCII码减57h 得到a-b对应的⼗六进制数值。
2.得到这些对应的数值之后,要把它们按输⼊顺序组合起来,这⾥可以⽤移位运算来组合,如根据输⼊转换得 1、2两个⼗六进制数值,1的⼆进制表⽰为0001,2的⼆进制表⽰为0010,把0001左移4位得到00010000,加上0010,得到0001010,00010010表⽰的便是12h。
3.把输⼊转换为数值之后就准备要输出了,可采⽤除10法得到各个位上的数,如要输出110,先要把110转为 1、1、0 再把对应的数值加上30h转为ASCII码后输出,把110转换为 1、1、0,110除以10商为11,余数为0,此时余数作为个位上的数,得到个位为0;再⽤上⼀步的商11作为被除数除以10,得到商为10,余数为1,此时余数作为⼗位上的数,得到⼗位为1;重复上述步骤,商1作为被除数除以10,商0余1,得到百位为1,此时商等于0,算法结束。
DATAS SEGMENTbin dw 10 dup(?) ;存放⼆进制结果buf db 5 dup(?) ;存放⼗进制数各个数位上的数值如100,存放为 1,0,0msg1 db 'please input a hex number',13,10,'$'msg2 db 'the dec number:',13,10,'$'crlf db 13,10,'$' ;回车换⾏DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXmov bx,0 ;初始化bxLEA dx,msg1 ;输出提⽰字符串mov ah,9int 21hinput:mov ah,1 ;输⼊⼀个字符int 21hsub al,30h ;把al中的ascii码转换成数值jl initcmp al,10 ;输⼊的数在0-9之间跳转jl toBinsub al,27h ;再转换为a-fcmp al,0ah ;输⼊的字符⽐a⼩jl init ;结束输⼊cmp al,10h ;输⼊的字符⽐f⼤jge init ;结束输⼊toBin: ;转换为⼆进制,把输⼊组合成意义上的数值mov cl,4shl bx,cl ;bx左移4位mov ah,0add bx,ax ;把输⼊后并从ascii码转换来的值与bx相加mov bin,bx ;转换成⼆进制数后存到内存binjmp input ;继续输⼊init: ;初始化,准备转换mov ax,binmov bx,10mov si,4 ;循环四次,最⼤到万位toDec: ;转为各个数位上的数值,如100转换为1,0,0 百位为1...mov dx,0div bx ;除10法得到各个位上的数值mov [buf+si],dl ;余数为该位上的值,第⼀次循环为个位,第⼆次为⼗位...;存到内存中dec sicmp ax,0 ;商是否为0,为0算法结束ja toDeclea dx,crlf ;显⽰提⽰mov ah,9int 21hlea dx,msg2mov ah,9int 21houtput: ;输出内存中存放的各个数位上的数值inc simov dl,[buf+si]add dl,30h ;转为asciimov ah,2int 21hcmp si,4jb outputmov ah,1int 21hMOV AH,4CHINT 21HCODES ENDSEND START到此这篇关于汇编语⾔进制转换之16进制转10进制的⽂章就介绍到这了,更多相关汇编 16进制转10进制内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持! 。
汇编教程,汇编指令详解
A 0 0 1 1
B 0 1 0 1
AvB 0 1 1 1
21
1.4.3 “非”运算(NOT) 如变量为A,则它的“非”运算的结果用 A来 表示。“非”运算规则可用下表说明: A A 0 1 1 0
22
1.4.4 “异或”运算(XOR Exclusive—OR)
“异或”运算可用符号 来表示。 运算规则:即当两个变量的取值相异时,它们 的“异或” 结果为1。
13
用补码表示数时的符号扩展问题
符号扩展:将一个数从位数较少扩展到 位数较多。正数的符号扩展:高位补0, 负数的符号扩展:高位补1。
汇编语言课后习题及答案_按章节_超全面[1]
`00第一章课外练习题一、单项选择题:1.从键盘输入的字符,在计算机内存储的是它的(A)(A)二进制编码(B)四进制编码(C)八进制编码(D)十六进制编码2.6位无符号二进制数能表示的最大十进制数是(B)。
(A)64 (B)63 (C)32 (D)31 3.十进制数269变换为十六进制数是(C)。
(A)10B (B)10C (C)10D (D)10E 4.8位的微型计算机系统是以16位来表示地址,则该微机系统有(C)个地址空间。
(A)255 (B)65535 (C)65536 (D)1048576 5.8位有符号二进制数能表示的最大十进制数是(D)。
(A)256 (B)255 (C)128 (D)127 6.十六进制数88H,可表示成下面几种形式,请找出错误的表示(D)。
(A)无符号十进制数136 (B)带符号十进制数-120(C)压缩型BCD十进制数88 (D)8位二进制数-8的补码表示7.有一个数值152,它与十六进制数6A相等,那么该数值是(B)。
(A)二进制数(B)八进制数(C)十进制数(D)四进制数8.7位ASCII总共可表示(C)个符号。
(A)256 (B)127 (C)128 (D)255 9.4B的字长是(C)。
(A)8位(B)16位(C)32位(D)64位二、判断题(判断每题正误,对的在题后括号内划“√”,错的划“×”)1.字节通常用英文单词“Bit”来表示(×)。
2.目前广泛使用的Pentium计算机其字长为5个字节(×)。
3.存储器中将8个相邻的二进制位作为一个单位,这种单位称为字节(√)。
4.微型计算机的字长并不一定是字节的整数倍(×)。
三、填空题1.8位有/无符号整数的表示范围写成16进制形式为(80~~7F)/(00~~FF)。
2.己知:计算机中有一个“01100001”编码,如果把它看作是无符号数,它是十进制什么数(97);如果认为它是BCD,则表示(01100001)BCD;认为它是某个ASCII,则代表(a)字符。
汇编语言程序设计 第1篇 汇编语言基础知识
汇编 语言实现 汇编后的目 标文件只有 208字节
2019/1/23
11
计算机科学与技术系
《汇编语言程序设计》
1.1
汇编语言概述
1.1.2 汇编语言的特点
建议: ●充分注意“汇编”课实践性强的特点, ●多读程序,多写程序,多上机调试程序, ●熟悉PC机的编程结构, ●掌握汇编语言及其程序设计的基本概念、
2019/1/23
第 1章
汇编语言基础知识
19
计算机科学与技术系
《汇编语言程序设计》
1.2
进位计数制及其转换
1.2.2 不同数制之间的转换
(3)一般的十进制数转换成二进制数 为了将一个既有整数又有小数部分的十进制数转换成二进制 数,可以将其整数部分和小数部分分别进行转换,然后再组合 起来。 例:117.8125D = 1110101.1101B
1.1.2 汇编语言的特点
经常与高级语言配合使用,应用十分广泛。
2019/1/23
第 1章
汇编语言基础知识
9
计算机科学与技术系
《汇编语言程序设计》
1.1
汇编语言概述
1.1.2 汇编语言的特点
编程实现 c =a+b,并在屏幕上显示出结果。 #include "stdafx.h" #include "stdio.h" int main(int argc, char* argv[]) { int a,b,c; a=1; b=2; c=a+b; printf(“c=%d\n",c); return 0; }
计算机科学与技术系
《汇编语言程序设计》
1.2
进位计数制及其转换
1.2.2 不同数制之间的转换