汇编语言程序例题知识讲解
钱晓捷新版汇编语言程序设计习题答案(修改)详解

钱晓捷新版汇编语言程序设计习题答案第一章汇编语言基础知识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主存空间的使用情况。
汇编语言程序例题0001

【例】试编写一程序计算以下表达式的值。
w = (v- (x * y + z -540 )) /x式中x、y、z、v均为有符号字数据。
设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图所示。
DATA SEGMENTX DW 200Y DW 100Z DW 3000V DW 10000W DW 2 DUP (?)DATA ENDSSTACK SEGMENT STACKDB 200 DUP (0)STACK ENDSCODESEGMENTASSUME DS DATA CS: CODE SS: STACKSTART MOV AX DATAMOV DS AX ; DATA>AXMOV AX XIMUL Y ; (X) * (DX AXMOV CX AXMOV BX,DX ;(DX AX)TBX:CX)MOV AX,ZCWD ;(Z)符号扩展ADD CX,AXADC BX,DX;(BX: CX)+( DX:AX)BX:CX)SUB CX,540SBB BX,0 ;( BX:CX) - 5 40~BX:CX)MOV AX,VCWD ;(V)符号扩展SUB AX,CXSBB DX,BX ;( DX:AX)-((BX CX DX: AX)IDIV X ;( DX:AX)/XMOV W,AX ;商5MOV W+2 DX ;余数D©W+2MOV AH,4CHINT 21HCODEENDS ;退出DOS 状态END START【例】已知某班学生的英语成绩按学号(从 1 开始)从小到大的顺序排列在要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。
编写程序如下: STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTTAB DB 80 ,85,86,71,79,96DB 83 ,56,32,66,78,84NO DB 10ENGLIST DB ?DATA ENDSCODE SEGMENTASSUME DS: DATA,SS: STACK,CS: CODEBEGIN: MOV AX,DATAMOV DS,AXLEA BX,TABMOV AL,NODEL ALXLAT TABMOV ENGLIS,H ALMOV AH,4CHINT 21HCODEENDSTAB表中,END BEGIN【例】已知在内存中有一个字节单元NUM存有带符号数据,要求计算出它的绝对值后, 放入RESULT^元中。
汇编语言程序例题知识讲解

第一遍101690328
第二遍169032108
第三遍903216108
程序流程图如图5.9所示。
DATASEGMENT
BUFDW 3,-4,6,7,9,2,0,-8,-9,-10,20
N=($-BUF)/2
DATAENDS
STACKSEGNMENT STACK
DB 200 DUP(0)
DI存放ASCII码首地址
出口参数:
转换后的字符串存放在以DI作指针的字节存贮区中
程序清单:
DATASEGMENT
NUM8DB93H
NUM16DW0ABCDH
ASCBUFDB20DUP(0)
DATAENDS
CODESEGMENT
ASSUME DS:DATA,CS:CODE,SS:STACK
START:MOVAX,DATA
题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。8086/8088指令系统中有专门的求相反数的指令NEG。
DATASEGMENT
XDB -25
RESULTDB ?
DATAENDS
CODESEGMENT
程序流程如图下所示。
DATASEGMENT
TABDW P1,P2,P3,P4,P5,P6,P7,P8
NDB 5
DATAENDS
STACKSEGMENT
DB 200 DUP(0)
STACKENDS
CODESEGMENT
ASSUME DS:DATA,SS:STACK,CS:CODE
START:MOVAX,DATA
MOVDS,AX
《汇编语言程序设计》(第四版)教案及答案解析

《汇编语言程序设计》教案附:习题参考答案《汇编语言程序设计》(第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 章 基础知识【教学目的】本章内容是本课程的基础,通过本章学习,使学生明确汇编语言程序设计的学科性质、基本内容和学习意义,掌握数制的转换、数据的编码,了解本门课程的教学要求和学习方法。
第4章-汇编语言程序设计习题解答

LOP: LODSB XCHG AL,[DI] XCHG SI,DI DEC DI STOSB XCHG SI,DI INC DI LOOP LOP
习题4.14
• 现有一子程序: SUB1: PROC TEST AL,80H(1000 0000B);AL的值与80H相“与”,判断正负 JE PLUS ;如果AL的首位为0(即为正),则转移到PLUS ;如果AL为负,则顺序执行 TEST BL,80H ; 判断BL的值的正负 JNE EXITO ;如果BL的首位为1(为负),则转移到EXITO ;如果BL为正,则顺序执行 JMP XCHANGE;转移到XCHANGE PLUS: TEST BL,80H ;判断BL的值的正负 JE EXITO ;如果BL的首位为0(即为正),则转移到EXITO ;如果BL为负,时顺序执行 XCHANGE: XCHG AL,BL ;AL与BL交换 EXITO: RET ;返回主程序 SUB1 ENDP 试回答(1)子程序的功能是什么? (2)如调用前AL=9AH,BL=77H,那么返回主程序时AL=?;BL=? 解答:(1)子程序的功能是判别AL和BL中的数是否为异号数,当为异号时交换,否则不 变。 (2) AL中的数据的最高位为1,BL中的数据的最高位为0,即两个数为异号,所以 要交换AL和BL中的内容,即AL=77H,BL=9AH。
习题4.17
• 设在数据段中有X,Y两个变量(字节单元),试编写程序 段计算(只写有关功能的指令). X 当X≥0时 • Y= │X│ 当X <0时
X Y
· · ·
DB DB
X Y
AL,X AL,0 DONE AL Y,AL
MOV CMP JGE NEG DONE: MOV
习题4.18
汇编语言程序设计(第四版)第2章【课后答案】讲解

汇编语言程序设计第四版【课后习题答案】--囮裑為檤第2章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(2)mov ax,bx(3)mov ax,[1200h](4)mov ax,[bx](5)mov ax,[bx+1100h](6)mov ax,[bx+si](7)mov ax,[bx][si+1100h]〔解答〕(1)AX=1200H(2)AX=0100H(3)AX=4C2AH ;偏移地址=bx=0100h(4)AX=3412H ;偏移地址=bx=0100h(5)AX=4C2AH ;偏移地址=bx+1100h=1200h(6)AX=7856H ;偏移地址=bx+si=0100h+0002h=0102h(7)AX=65B7H ;偏移地址=bx+si+1100h=0100h+0002h+1100h=1202h〔习题2.2〕指出下列指令的错误(1)mov cx,dl(2)mov ip,ax(3)mov es,1234h(4)mov es,ds(5)mov al,300(6)mov [sp],ax(7)mov ax,bx+di(8)mov 20h,ah〔解答〕(1)两操作数类型不匹配(2)IP指令指针禁止用户访问(3)立即数不允许传给段寄存器(4)段寄存器之间不允许传送(5)两操作数类型不匹配(6)目的操作数应为[ SI ](7)源操作数应为[BX+DI](8)立即数不能作目的操作数〔习题2.3〕已知数字0 ~ 9对应的格雷码依次为:18H、34H、05H、06H、09H、0AH、0CH、11H、12H、14H,它存在于以table为首地址(设为200H)的连续区域中。
汇编语言程序

2020/12/27
16
4.2.4 表达式
在80x86汇编语言中,有数值表达式和地址 表达式两种。
数值表达式 由各种常量与数值运算符连接而成的式子,
称为数值表达式。数值表达式的计算结果是 一个数值,它只有大小而没有属性。 算术、关系、逻辑运算符
2020/12/27
17
地址表达式
由常量、变量、标号、寄存器和数值运算符、 地址运算符组合而成的有意义的式子,称为 地址表达式,单个变量、标号是地址表达式 的最简形式。由于变量和标号具有段 (SEG)、偏移(OFFSET)、类型 (TYPE)3种属性,这就决定了对它们的访 问是多种形式的。
Байду номын сангаас第四章 汇编语言程序
4.1 汇编语句 4.2 汇编语言数据 4.3 8086指令系统 4.4 汇编语言伪指令 4.5 汇编源程序结构 4.6 上机操作过程
2020/12/27
1
4.1 汇编语句
4.1.1 语句种类 汇编语言有3种语句类型,指令语句、伪指令语句、宏指令语
句。
指令语句是可执行语句,在汇编时可产生供机器执行的二进制
2020/12/27
3
2.名字
名字是一串字符序列,最多包含31个字符。在汇 编语言中,名字的应用范围很广,有寄存器名、变 量名、常量名、标号、指令名等等。在语句格式中 作为第一可选成分出现的<名字>,在不同的语句 中具有不同的含义。它在指令语句中表示标号,后 面必须跟有冒号“:”;而在伪指令语句中表示变 量名,常量名,段名,过程名,后面不能有冒号。 这是两种语句在格式上的主要不同之处。
指令语句中的标号和伪指令语句中变量名,段名, 过程名是一种符号地址,可作为汇编指令的一个操 作数,但常量名不是符号地址,不能用做目的操作 数。不同的标号、变量和常量不能同名。
汇编语言典型例子详解汇编语言例子

汇编语言典型例子详解汇编语言例子汇编语言典型例子详解汇编语言是一种底层的编程语言,用于与计算机硬件进行交互和控制。
在计算机科学领域,学习汇编语言例子可以帮助我们深入了解计算机的工作原理和底层运行机制。
本文将详细解析几个典型的汇编语言例子,帮助读者更好地理解和掌握汇编语言编程。
1.加法运算的例子假设我们需要编写一个汇编语言程序来实现两个数字的加法运算。
以下是一个典型的汇编语言例子:```assemblysection .datanum1 db 5num2 db 3result db 0section .textglobal _start_start:mov al, [num1] ; 将num1的值加载到寄存器al中add al, [num2] ; 将num2的值与al中的值相加mov [result], al ; 将结果保存到result中; 输出结果到屏幕mov ah, 0x0E ; 设置打印字符的功能码mov al, [result] ; 将结果加载到al寄存器中add al, 30h ; 将结果加上字符'0'的ASCII码,使其变为可打印字符 int 10h ; 调用BIOS中断打印结果; 退出程序mov eax, 1 ; 设置退出系统调用号int 0x80 ; 调用系统调用中断退出程序```上述例子使用了汇编语言的指令和寄存器来完成加法运算,并将结果保存到result变量中。
最后,通过BIOS中断调用将结果打印到屏幕上,并使用系统调用中断退出程序。
2.循环控制的例子下面是一个使用汇编语言编写的简单循环控制的例子:```assemblysection .datacount db 10 ; 循环次数sum db 0 ; 计数器section .textglobal _start_start:xor rcx, rcx ; 清零计数寄存器rcxloop_start:cmp cl, [count] ; 比较计数寄存器和循环次数je loop_end ; 若相等,跳转到循环结束add cl, 1 ; 计数器自增1add [sum], cl ; 将计数器的值加到sum中jmp loop_start ; 无条件跳转到循环开始loop_end:; 输出结果到屏幕mov ah, 0x0E ; 设置打印字符的功能码mov al, [sum] ; 将sum加载到al寄存器中add al, 30h ; 将结果加上字符'0'的ASCII码,使其变为可打印字符 int 10h ; 调用BIOS中断打印结果; 退出程序mov eax, 1 ; 设置退出系统调用号int 0x80 ; 调用系统调用中断退出程序```上述例子使用了循环控制指令来实现对计数器和循环次数的操作。
汇编语言基础知识及例题

调试程序的使用
熟练使用调试程序是学习和掌握汇编语 言的关键! 三个重点
了解DEBUG DEBUG中几个主要命令的熟练使用 用DEBUG写一个汇编程序
DEBUG的定义
• • • • • DEBUG是专门为汇编语言设计的调试工具 可以检查、修改存储单元和寄存器的内容 可以装入、存储及运行目标程序 也可用DEBUG汇编简单的汇编语言程序 但一般人们更多的是用它作为调试工具
DEBUG是汇编语言程序员分析、跟踪、修改指 令程序的有效工具。
Debug 基本命令
• a (Assemble) 逐行汇编 a [address] • c (Compare) 比较两内存块 c range address • d (Dump) 内存16进制显示 d [address]或d [range] • e (Enter) 修改内存字节 e address [list] • f (fill) 预置一段内存 f range list • g (Go) 执行程序 g [=address] [address...]
什么叫汇编语言
• 汇编语言(Assembly Language)是面向机器的程序设计语 言。 • 在汇编语言中,用助记符(Mnemonic Symbol )代替机器指 令的操作码,用地址符号(Symbol)或标号(Label)代替 指令或操作数的地址,如此就增强了程序的可读性并且降低了 编写难度,象这样符号化的程序设计语言就是汇编语言,因此 亦称为符号语言。 • 使用汇编语言编写的程序,机器不能直接识别,还要由汇编程 序或者叫汇编语言编译器转换成机器指令。汇编程序将符号化 的操作代码组装成处理器可以识别的机器指令,这个组装的过 程称为组合或者汇编。因此,有时候人们也把汇编语言称为组 合语言。
汇编语言程序设计考试题型说明(老师上课讲的题)

汇编语言程序设计考试题型说明一、填空题(20%)二、选择题(15% )三、是非判断题(10%)四、简答题(10%)五、指出语句错误(8%)六、程序分析题(12%)七、程序填空题(10%)八、程序设计题(15%)•汇编语言题型讲解一、填空题例1.任何变量都有段地址、偏移地址、类型三种属性。
例2.“VAR DB 5 DUP(8,2 DUP(5))”语句汇编应分配15个字节单元。
例3. 请用一条指令实现如下操作:(1)将AX中划‘X’的位清0(2)将BL寄存器的低四位取反:X O R B L,0F H。
例 4.假设存储器中各字节单元的内容是:(06925H)=12H,(06926H)=45H,(06927H)=78H,那么字单元(06925H)= 4512H ,字单元(06926H)= 7845H。
例5.语句DA2 DW ‘AB’ 汇编后在DA2字节单元中存放42H,在DA2+1字节单元中存放41H。
例6.若DS=0F3EH,SI=2000H,COUNT=0A8H,指令MOV AX,[SI+COUNT]中,源操作数的有效地址EA为20A8H,其物理地址为11488H。
例7.R E P、R E P Z、R E P N Z。
例8. DB指令以字节为单位分配存贮;DW指令以字为单位分配存贮。
故如下数据定义:V1 DB 4 DUP (2), 2COUNT EQU 10V2 DW COUNT DUP(?)为变量V1分配5个字节存贮区;为变量V2分配20个字节存贮区。
例9.在执行串处理指令时,为了使地址自动增量,应执行指令:C L D,该指令使得方向标志位例10.中断程序的入口地址称为中断向量IBM PC机中,共有256个中断源,每个中断向量占内存中的中断向量表4个字节。
例11.一个字存入堆栈时,堆栈指针SP -2修正;从堆栈中取出一个字时,SP +2修正,SP 总是指向栈顶单元。
例12.下面是对DOS功能调用方法的简单说明:(1)在AH寄存器中存入所要调用功能的功能号;(2)根据所调用功能的规定设置入口参数;(3)用I N T21H(4)相应的子程序运行完后,可按规定取得出口参数。
汇编语言程序设计复习

知识点第一章基础知识(1)正负数的补码表示, 掌握计算机中数和字符的表示;eg.假设机器字长为8位,[+3]补=00000011B,[-3]补= 11111101 H 。
十六进制数0FFF8H表示的十进制正数为65528D,表示的十进制负数为-8D。
8位二进制数被看成是带符号补码整数时,其最小值是-128,最大值是 127 。
第二章80x86计算机组织(1)中央处理机CPU的组成和80x86寄存器组,重点:专用寄存器,段寄存器eg: IP寄存器中保存的是?代码段中的偏移地址FLAGS标志寄存器中共有几位条件状态位6位,有几位控制状态位2位,标志寄存器分为哪2类?陷阱标志,中断标志。
(2)存储单元的地址和内容每一个字节单元给以一个唯一的存储器地址,称为物理地址;一个存储单元中存放的信息称为该存储单元的内容。
存储器地址的分段,(低位字节存放)低地址,(高位字节存放)高地址;实模式下逻辑地址、选择器和偏移地址;物理地址的表示段基地址加上偏移地址。
eg.如果SS=6000H,说明堆栈段起始物理地址是_____60000H___。
已知字节(00018H)=14H,字节(00017H)=20H,则字(00017H)为__1420H______。
如果(SI)=0088H,(DS)=5570H,对于物理地址为55788H的内存字单元,其内容为0235H,对于物理地址为5578AH的内存字单元,其内容为0E60H,那么执行指令LDS SI,[SI]以后,(SI)= 0235H ,(DS)= 0E60H .第三章80x86的指令系统和寻址方式与数据有关的寻址方式(立即寻址方式,寄存器寻址方式,直接寻址方式,寄存器间接寻址方式,寄存器相对寻址方式,基址变址寻址方式,相对基址变址寻址方式)和与转移地址有关的寻址方式(段内直接寻址,段内间接寻址,段间直接寻址,段间间接寻址)。
数据传送指令(通用数据传送指令、累加器专用传送指令、输入输出指令)、算术指令(加法指令、减法指令(*加减指令对4个标志位的影响[of,cf,sf,zf])、乘法指令(*乘法指令的要求:目的操作数必须是累加器)、除法指令(*被除数在累加器中,除法指令执行完以后,商和余数在?))、逻辑指令(逻辑运算指令(*XOR,AND,OR,TEST指令及指令执行后对标志位的影响)、移位指令)、串处理指令(与REP相配合工作的MOVS、STOS、LODS 指令,与REPE/REPZ和REPNE/REPNZ联合工作的CMPS、SCAS指令)、控制转移指令(无条件转移指令、条件转移指令、循环指令、子程序调用指令、中断)。
汇编语言程序设计习题解答及课程实验、设计辅导

实验一汇编程序的汇编及运行1.实验目的(1)熟悉汇编程序的汇编、连接、执行过程;(2)生成LST文件,查看LST文件;(3)生成OBJ文件,修改语法错误;(4)生成EXE文件;(5)执行程序。
2.实验涉及知识汇编程序从编写到执行的过程编程→.ASM→编译→.OBJ→连接→.EXE→加载→内存中的程序→执行1)编写源程序用EDIT或记事本输入各段,并存储成源程序(保存在MASM目录下),扩展名为ASM。
2)对源程序进行汇编、连接操作如下:(1)在DOS状态下,进入MASM目录;(2)输入命令:MASM 文件名(连同扩展名);(3)在系统出现的提示中输入:object filename[.obj]:按回车键。
Source listling[nul.lst]:输入:文件主名,生成lst文件,也可以不生成,直接按回车键。
Lst文件用于查看编译为目标文件的过程中产生的中间结果。
Cross-reference [nul.crf]:按回车键。
(4)如果系统没有提示出错,那么编译过程就完成了。
如果提示错误则应用edit打开源文件进行修改,然后再重复2和3步骤(5)输入:link 文件主名(不要输扩展名,也可以输入扩展名.obj)run file [.exe]:按回车键。
List file [nul.map]:按回车键。
Libraries [.lib]:按回车键。
(6)没有提示错误,汇编过程就结束了,产生了exe可执行文件。
如果出现‘no stracksegment’的错误警告,不用理会。
3)执行程序(由DOS中的COMMAND命令将文件加载入内存)在DOS提示符下直接输入文件主名就可以执行文件了。
程序执行后,有的会显示结果,有的可能执行后什么结果都没有,是因为程序中没有显示命令。
3.实验内容1)将下面的数据段输入,取名1.ASM,保存在MASM文件夹下。
生成LST文件,(不必连接、运行)用EDIT查看1.LST文件。
(完整版)汇编语言习题详解(全部)(免费)

《IBM—PC汇编语言程序设计》习题参考答案第一章.习题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=7FFFH1.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=2551.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=46601.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=2178931.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。
汇编语言典型例题

汇编语言典型例题汇编语言是一种底层的编程语言,它直接操作计算机硬件,并且与特定的计算机体系结构密切相关。
本文将介绍一些汇编语言的典型例题,帮助读者更好地理解和掌握这门编程语言。
例题一:计算两个数的和要求:编写一段汇编语言程序,计算两个32位有符号整数的和,并将结果存储在一个指定的寄存器中。
解决方案:```assemblysection .datanum1 dd 10num2 dd 20sum dd 0section .textglobal _start_start:mov eax, [num1]add eax, [num2]mov [sum], eax; 以下为输出结果的代码,具体实现方式与平台相关,这里不做详细展示...```例题二:判断一个数是否为负数要求:编写一段汇编语言程序,判断一个16位有符号整数是否为负数,如果是负数,则将其变为正数。
解决方案:```assemblysection .datanum dw -10section .textglobal _start_start:mov ax, [num]cmp ax, 0jnl positiveneg axpositive:; 此处可添加自定义逻辑,对正数进行处理; 以下为输出结果的代码...```例题三:字符串反转要求:编写一段汇编语言程序,将一个以0结尾的字符串进行反转,并输出反转后的字符串。
解决方案:```assemblysection .datastr db 'Hello, World!', 0len equ $ - strsection .textglobal _start_start:mov ecx, len - 1mov esi, 0mov edi, ecxreverse_loop:cmp esi, edijge print_reversemov al, [str+esi]mov ah, [str+edi]mov [str+esi], ahmov [str+edi], alinc esidec edijmp reverse_loopprint_reverse:; 以下为输出结果的代码...```通过以上例题的介绍,希望读者能对汇编语言的基本应用有一定的了解和掌握。
汇编语言习题解答(1)

汇编语⾔习题解答(1)习题⼀1.1 简述微型计算机的发展层次。
1.2 简述汇编语⾔源程序、汇编程序和⽬标程序的关系。
1.3 写出下列各数的原码、反码和补码。
(1) 0.0000 (2) 0.1001 (3) -10011.4 已知[N]反=1.0101,求[N]原,[N]补和N。
1.5 ⽤原码、反码、补码完成下列运算。
(1) 01010011-00110011 (2) 0.100100-0.1100101.6 转换下列各数为8421BCD码。
(1)(11011011)2 (2)(456)10 (3)(174)8 (4)(2DA)161.7 数值9876H分别看成有符号数和⽆符号数,转换为相应的⼗进制数。
1.8 写出⼗进制数98的压缩BCD码和⾮压缩BCD码。
1.9 根据下列8位⼆进制数,计算[S1+S2]补和[S1-S2]补,并判断是否溢出。
(1)S1=+22,S2=+33 (2)S1=+22,S2=-33(3)S1=+100,S2=+30 (4)S1=-100,S2=-30习题⼀解答:1.1略1.2略1.3(1)[0.0000]原=0.0000 [0.0000]反=0.0000 [0.0000]补=0.0000(2)[0.1001]原=0.1001 [0.1001]反=0.1001 [0.1001]补=0.1001(3)[-1001]原=11001 [-1001]反=10110 [-1001]补=101111.4[N]反=1.0101 [N]原=1.1010 [N]补=1.0110 N=-0.10101.5(1)原码运算:⽐较可知,正数较⼤,⽤正数减负数,结果为正反码运算:01010011-00110011=[01010011]反+[-00110011]反=001010011 +[100110011]反=001010011+111001100=000100000 补码运算:01010011-00110011=[01010011]补+[-00110011]补=001010011 + [100110011]补=001010011+111001101=000100000(2)原码运算:⽐较可知,负数较⼤,⽤负数减正数,结果为负反码运算:0.100100-0.110010=0.100100+[1.110010]反=0.100100+1.001101=1.110001补码运算:0.100100-0.110010=0.100100+[1.110010]补=0.100100+1.001110=1.1100101.6(1) (11011011)2=(219)10=(001000011001)BCD(4) (2DA)16=(730)10=(011100110000)BCD1.7(1)9876H看成有符号数时,默认为负数的补码,转换为⼗进制数是:-26506(2)9876H看成⽆符号数时,转换为⼗进制数是:390301.8(1)98的压缩BCD码为:10011000B(2)98的⾮压缩BCD码为:0000100100001000B1.9(1)[S1+S2]补=[S1]补+[S2]补=00010110+00100001=00110111,⽆溢出[S1-S2]补=[S1]补+[-S2]补=00010110+11011111=11110101,⽆溢出(2)[S1+S2]补=[S1]补+[S2]补=00010110+11011111=11110101,⽆溢出[S1-S2]补=[S1]补+[-S2]补=00010110+00100001=00110111,⽆溢出(3)[S1+S2]补=[S1]补+[S2]补=01100100+00011110=10000010,有溢出[S1-S2]补=[S1]补+[-S2]补=01100100+11100010=01000110,⽆溢出(4)[S1+S2]补=[S1]补+[S2]补=10011100+11100010=01111110,有溢出[S1-S2]补=[S1]补+[-S2]补=10011100+00011110=10111010,⽆溢出习题⼆2.1 8086有哪些寄存器组?各有什么⽤途?2.2 8086流⽔线技术是怎样通过总线接⼝部件和执⾏部件来进⾏的?2.3 何谓最⼩⼯作模式?最⼤⼯作模式?2.4 什么是逻辑地址?8086系统中的物理地址是怎样形成的?假如CS=4000H,IP=2200H,其物理地址是多少?2.5 阐述8086系统中存储器的结构特点。
汇编语言上机指导及例示(川大微机原理实验资料和内容以及MASM使用方法)

汇编语言上机指导及例示、习题从如何建立源文件到进行调试作下简要的介绍,并配例题说明。
由于本人水平有限,在下文在如有错误及可以进一步修改的地方请大家指出汇编语言上机过程:一、上机前的软件准备:MS-DOS操作系统(如:MSDOS6.22 , MSDOS7.0 等)文本编辑器(如: , TURBO.EXE , TC.EXE , C.EXE 等)汇编程序(如:MASM.EXE , ASM.EXE 等)连接程序(如:LINK.EXE 等)调试程序(如:DEBUG.EXE 等)二、汇编程序建立过程:a.建立汇编源程序─通过───→b.编译为目标文件─↓┬─→d.连接为可执行文件↑│ c.不通过,重新修改(语句错误)↓├──────────────────────┘↓↑ f.不正确,用调试工具调试,重新修改(逻辑错误)↓└────────────────────────────←e运行↓正确g.完成三、现在对(二)的每一个标有字母的过程(PROCEDURE)进行详细说明PROCEDURE a:建立汇编源程序(即:建立文件名.asm)这个过程就相当于我们在纸上编写源程序代码一样,只不过是将纸变为了计算机,这个过程也称源代码录入。
将源程序代码录入计算机的方法很多,下面将介绍具体方法。
1.通过MD-DOS自带的EDIT.EXE文本编辑器进行输入,在DOS提示符下键入:EDIT回车,这时如果你系统内可调用时,EDIT的操作画面便会出现在屏幕上,你就可在提示下进行录入了,当录入完毕后,选择存盘并给你输入的文件起一个文件名,形式:filename.asm ;(其中filename为你起的文件名,由1-8个字符组成),asm 是为汇编程序识别而必须加上去的,不可更改。
存盘后在DOS下可用DOS命令DIR来查看,如果看到了所存的文件存在,就可以进行进程b。
2.如果你的系统中没有EDIT,也可用你所熟悉的文本编辑器进行录入、编辑,如可用c语言和pascal语言的文本编辑器来编辑,最后将文件存为filename.asm的形式即可。
51 单片机 汇编例题解析

12:58:06
例 3 x, y均为8位二进制数, 设 x存入R0, y 存入R1, 求解: y=syn(x)
12:58:06
例 3 x, y均为8位二进制数, 设 x存入R0, y存入R1, 求解: y=syn(x)
程序如下:
START: CJNE R0, #00H, SUL1 ; R0中的数与00比较不等转移
MOV R1, #00H; 相等, R1← 0
SJMP SUL2
SUL1: JC NEG ; 两数不等, 若(R0)<0, 转向NEG MOV R1, #01H ; SJMP SUL2 NEG : MOV R1, #0FFH ; (R0)<0, 则 R1←0FFH
(Hale Waihona Puke 0)>0, 则 R1←01H
SUL2 : RET
12:58:06
例 6 位)。
设在内部 RAM的BLOCK单元开始处有长度为LEN个的无符号数据块,
试编一个求和程序 , 并将和存入内部 RAM 的 SUM 单元(设和不超过
8
BLOCK EQU 20H LEN EQU 30H SUM EQU 40H START: CLR A ; 清累加器A MOV R2, #LEN; 数据块长度送R2 MOV R1, #BLOCK ; 数据块首址送R1 LOOP: ADD A, @R1 ; 循环加法 INC R1; 修改地址指针 DJNZ R2, LOOP ; 修改计数器并判断 MOV SUM, A; 存和 RET
12:58:06
正确程序如下:
SUBF : MOV A,R0
JZ ZERO
JB ACC.7 , NEG
MOV R1, #1
ZERO : MOV R1 , #0
第四章 汇编语言程序设计基础

4.2.2 分支程序的设计方法 ★条件控制 ★逻辑尺控制 ★地址跳转表控制
1. 条件控制——利用比较和条件转移指令实现分支,是最常用的 程序设计方法。
பைடு நூலகம்
例如,求解函数:
练习题2. 编写程序,比较两个字符串STRING1和STRING2所 含字符是否完全相同,若相同则显示“MATCH”,若不同则显示 “NO MATCH”。 答案: datarea segment string1 db ‘asfioa’ ;定义字符串STRING1 string2 db ‘xcviyoaf’ ;定义字符串STRING2 mess1 db ‘MATCH’,’$’ ;定义显示字串“MATCH” mess2 db ‘NO MATCH’,’$’ ;定义显示字串“NO MATCH” datarea ends prognam segment main proc far assume cs:prognam,ds:datarea start: push ds ;将ds:00入栈 sub ax,ax push ax mov ax,datarea ;装填数据段及附加段 mov ds,ax mov es,ax
程序流程图
mov ch,4 rotate: mov cl, 4 rol bx,cl mov al,bl and al,0fh add al,30h ;’0’-’9’ ASCII 30H-39H cmp al,3ah jl printit add al,7h ;’A’-’F’ ASCII 41H-46H printit: mov dl,al mov ah,2 int 21h dec ch jnz rotate
例4.3 将首地址为A的N字数组按照从小到大的次序整序(气 泡算法,多重循环) A dw 32,85,16,15, 8
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程汇题例序言语编.精品文档【例5.1】试编写一程序计算以下表达式的值。
w=(v-(x*y+z-540))/x式中x、y、z、v均为有符号字数据。
设x、y、z、v的值存放在字变量X、Y、Z、V中,结果存放在双字变量W之中,程序的流程图如图5.1所示。
DATA SEGMENTDW 200 XDW Y 100DW Z 3000DW V 10000DW2 DUP(?)WDATA ENDSSTACK SEGMENT STACKDB 200 DUP(0)STACK ENDS收集于网络,如有侵权请联系管理员删除.精品文档CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACK START:MOV AX,DATAMOV DS,AX ;DATA→AXX ,MOV AXAX (*Y)→DX:IMUL Y;(X)MOV CX,AXMOV BX,DX ;(DX:AX)→(BX:CX)Z ,MOV AX )符号扩展;(Z CWDADD CX ,AXADC BX,DX;(BX :CX)+(DX:AX)→(BX:CX)SUB CX,540SBB BX,0 ;(BX:CX )-540→(BX:CX)V,MOV AX CWD ;(V)符号扩展SUB AX,CXSBB DX,BX;(DX:AX)-(BX:CX)→(DX:AX);(DX:AX )/XIDIV XMOV W,AX ;商→W;余数DXMOV W+2,DX→W+2收集于网络,如有侵权请联系管理员删除.精品文档MOV AH,4CHINT 21HENDS;退出DOS 状态CODEEND START【例5.2】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。
编写程序如下:STACK SEGMENT STACKDB200 DUP(0)STACK ENDSDATA SEGMENTTAB DB 80,85,86,71,79,96DB 83,56,32,66,78,84NODB 10DB ?ENGLISTDATA ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODEBEGIN:MOV AX,DATAMOV DS ,AXLEA BX,TABMOV AL,NODEL ALXLAT TABMOV ENGLISH,ALMOV AH,4CHINT 21HCODEENDS收集于网络,如有侵权请联系管理员删除.精品文档END BEGIN【例5.3】已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。
题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。
8086/8088指令系统中有专门的求相反数的指令NEG。
DATA SEGMENTX DB -25RESULT DB ?DATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AX;初始化MOV AL,X ;X取到AL中;测试AL正负TEST AL,80HJZ NEXT ;为正,转NEXT收集于网络,如有侵权请联系管理员删除.精品文档NEG AL ;否则AL求补NEXT: MOV RESULT,AL ;送结果MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START【例5.4】编写计算下面函数值的程序:1 X>0Y= 0 X=0-1X<0设输入数据为X、输出数据Y,且皆为字节变量。
程序流程图如下图所示。
DATA SEGMENTX DB -25Y DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATA收集于网络,如有侵权请联系管理员删除.精品文档MOV DS,AX ;初始化MOV AL,X ;X取到AL中CMP AL,0 ;Al中内容和0比较JGEBIG;大于等于0,转BIGMOV BL,-1 ;否则为负数,-1送BLJMPEXIT ;转到结束位置EE;Al中内容是否为0,为0转EEBIG: JEMOV BL,1 ;否则为大于0,1送BLJMPEXIT ;转到结束位置BL,0 ;0送BLEE:MOVEXIT: MOV Y,BL ;BL中内容送Y单元MOV AH,4CHINT 21H ;程序结束CODE ENDS;汇编结束END START【例5.5】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX 字单元中。
中存储。
程序流程图如下图Z、Y、X设三个带符号数分别在三个字变量所示收集于网络,如有侵权请联系管理员删除.精品文档STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA SEGMENTX DW 00ABHY DW –5DW 200ZDW ?MAXDATA ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATAMOV DS,AX,X MOV AX Y;AX,Y X>?CMPL1JG;MOV AX ZY>?,YCMP AX ,ZJGEXITL2:MOV AX,ZJMP EXIT收集于网络,如有侵权请联系管理员删除.精品文档L1:CMP AX,Z ;X>Z?L2JLEEXIT:MOV MAX,AXAH,4CHMOVINT 21HCODE ENDSEND START【例5.6】设某程序有8路分支,试根据给定的N值(1~8),将程序的执行转移到其中的一路分支。
程序流程如图下所示。
DATA SEGMENTTAB DW P1,P2,P3,P4,P5,P6,P7,P8N DB 5DATA ENDSSTACK SEGMENTDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODE收集于网络,如有侵权请联系管理员删除.精品文档START:MOV AX,DATAMOV DS,AX┆MOV AL,NDEL ALADD AL,ALMOV BL,ALMOV BH,0JMP TAB[BX]P1:……┆JMP EXITP2:……┆JMP EXITP2:……┆JMP EXITP3:……┆JMP EXIT┆P8:……┆EXIT:MOV AH,4CHINT 21HCODE ENDSEND START【例5.7】已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。
收集于网络,如有侵权请联系管理员删除.精品文档显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。
其程序流程图如下图所示。
例5.8】编写程序完成求1+2+3+……N的累加和,直到累加和超过1000。
流程图如下图SUMCN为止。
统计被累加的自然数的个数送单元,累加和送所示。
收集于网络,如有侵权请联系管理员删除.精品文档DATA SEGMENTSUM DW ?CN DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX ;初始化;0 送MOV AX,0AXMOV BX,0 ;0送BXLP: INC BX ;BX加1ADD AX,BX ;求累加和;比较CMP AX,1000JBE LP ;≤1000转MOV SUM,AXMOV CN,BX;送结果MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START;汇编结束【例5.9】在以BUF为首址的字存储区中存放有N个有符号数,现需将它们按大到小的顺序排列在BUF存储区中,试编写其程序。
收集于网络,如有侵权请联系管理员删除.精品文档我们采用冒泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对,则不交换两数位置;如次序不对则使这两个数交换位置。
可以看出,第一遍需比较(N-1)次,此时,最小的数已经放到了最后;第二遍比较只需考虑剩下的(N-1)个数,即只需比较(N-2)次;第三遍只需比较(N-3)次,……整个排序过程最多需(N-1)遍。
如下面的4个数即是采用冒泡排序比较的例子。
数10 8 16 90 32第一遍8 16 190 32 0第二遍8 90 132 6 10第三遍32891610程序流程图如图5.9所示。
收集于网络,如有侵权请联系管理员删除.精品文档DATA SEGMENTDW 3,-4,6,7,9,2,0,-8BUF ,-9,-10,20 N= ($-BUF)/2DATA ENDSSTACK SEGNMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATAMOV DS,AXMOV CX,NDEC CXLOOP1:MOV DX,CXMOV BX,0LOOP2:MOV AX,BUF[BX]CMP AX,BUF[BX+2]JGELXCHG AX,BUF[BX+2]MOV BUF[BX],AXADD BX,2L:DEC CXJNE LOOP2收集于网络,如有侵权请联系管理员删除.精品文档MOV CX,DXLOOP LOOP1MOV AH ,4CHINT 21HCODE ENDSEND START程序运行后,BUF区中的内容如下:20,9,7,6,3,2,0,-4,-8,-9,-10若要对N个无符号数按由大到小的顺序排列,只需将指令“JGE L”改为“JAE L”即可。
【例5.10】将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元并显示。
如二进制数10010011转换成字符串为‘10010011'。
要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8倍和16倍二进制数的转换。
入口参数:DX存放待转换的二进制数CX存放待转换数的位数(8 位或16位)DI 存放ASCII码首地址出口参数:转换后的字符串存放在以DI作指针的字节存贮区中程序清单:DATA SEGMENTNUM8 DB 93HNUM16 DW 0ABCDH20DUP(0)ASCBUFDBDATAENDS收集于网络,如有侵权请联系管理员删除.精品文档CODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV DX,0MOV DL,NUM8 ;转换二进制数送DX;置位数8 8MOV CX,LEA DI,ASCBUF ;字符串首址→DICALL BTASC;调用子程序BTASCMOV [DI] ,BYTE PTR 0DHMOV [DI+1] ,BYTE PTR 0AH[DI+2],BYTE PTR ‘$'MOVLEA DX,ASCBUFMOV AH,9INT21HMOV DX,NUM16MOV CX,16;置位数16LEA DI ,ASCBUFCALL BTASCMOV [DL],BYTE PTR 0DHMOV [DL+1],BYTE PTR 0AHMOV [DL+2],BYTE PTR ‘$';显示转换后的字符串LEA DX,ASCBUF收集于网络,如有侵权请联系管理员删除.精品文档MOV AH,9INT 21HBTASC PROCPUSH AX;保存AXMOV AL,0CMP CX ,8 ;比较8位数JNEL1;直接转换16 位数;8位数转换送DHMOV DH,DLL1:DX最高位移入CFROL DX,,1;RCL AL,1 ;CF移入AL最低位ADD AL ,30HMOV [DI],ALINC DILOOP L1POP AXRETBTASC ENDPCODE ENDSEND START收集于网络,如有侵权请联系管理员删除.。