汇编语言程序例题
汇编语言程序例题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^元中。
单片机-汇编语言程序设计例题2

例 9 一个十六进制数存放在内部 RAM 的 HEX单元的 低 4 位中, 将其转换成ASCII码并送回 HEX单元。
十六进制 0~9的ASCII码为30H~39H, A~F的ASCII
码为41H~46H, ASCII码表格的首地址为ASCTAB。编程如
下:
ORG 1000H
HEXASC: MOV A, HEX ANL A, # 0FH ADD A, # 3; 修改指针
MOVC A, @A+PC
MOV HEX, A
RET
ASCTAB: DB 30H, 31H, 32H, 33H, 34H DB 35H, 36H, 37H, 38H, 39H DB 41H, 42H, 43H, 44H, 45H DB 46H
在这个程序中, 查表指令MOVC A, @A+PC到表格首 地址有两条指令, 占用 3 个字节地址空间, 故修改指针应加 3。
LOOP: MOV A, R3 MOV B, #10 MUL AB MOV R3, A ; (R3)×10 的低 8 位送R3 MOV A, B XCHA, R2 ; (R3)×10的高 8 位暂存R2 MOVB, #10
MUL AB ADD A, R2 MOV R2, A ; R2×10+( R3×10)高 8 位送R2 INC R0 ; 取下一个 BCD数 MOV A, R3 ADD A, @R0 MOV R3, A MOV A, R2 ADDC A, #0 ; 加低字节来的进位 MOV R2, A DJNZ R1, LOOP RET
例 15 在一个温度检测系统中, 温度模拟信号由 10 位A/D 输入。将A/D结果转换为对应温度值, 可采用查表方法实现。 先由实验测试出整个温度量程范围内的A/D转换结果, 把A/D 转换结果000H~3FFH所对应的温度值组织为一个表存储在 程序存储器中, 那么就可以根据检测到的模拟量的 A/D转换 值查找出相应的温度值。
_单片机-汇编语言程序设计例题 2

果存入 R2R3 中。
一个十进制数可表示为:
Dn×10n +Dn-1×10n-1 +… + D0×100
=(…((Dn×10+Dn-1)×10+Dn-2)×10+…)+D0
当n=3时, 上式可表示为:
((D3×10+D2)×10+D1)×10+D0
BCDHEX: MOV R0, #40H
; R0指向最高位地址
所谓查表法, 就是预先将满足一定精度要求的表示变量与 函数值之间关系的一张表求出, 然后把这张表存于单片机的程 序存储器中, 这时自变量值为单元地址, 相应的函数值为该地 址单元中的内容。查表, 就是根据变量 X在表格中查找对应的 函数值 Y, 使 Y=f(X)。
MCS - 51指令系统中, 有两条查表指令:
START: CLR C
MOV DPTR, #ST1 ; 第一个数的指针
MOVX A, @DPTR
MOV R2, A MOVX A, @DPTR CLR C
; 取第一个数
; 保存 ; 取第二个数
MOV DPTR, #ST2 ; 第二个数的指针
SUBB A, R2; 两数比较 JNC BIG2 ; 若第二个数大, 则转 XCH A, R2; 第一个数大 BIG1: MOV DPTR, #ST3
MOV21H, A
MOVA, 20H RLCA
MOV20H, A
MOVA, 21H ; 表首地址+偏移量 ADDC A, DPL MOVDPL, A
MOVA, 20H ADDC A, DPH MOVDPH, A CLR A MOVC A, @A+DPTR; 查表得温度值高位字节 MOV22H, A CLRA INCDPTR
汇编程序模拟题(有答案)

二、简答题(每小题4分,共12分) 1、在指令系统中,段内、段间返回均为RET指令。试回答: (1)执行段内返回RET指令时,执行的操作是: (2)执行段间返回RET指令时,执行的操作是: 2、ARY DW 10 DUP(?) ┇ MOV AL,TYPE ARY MOV BL,LENGTH ARY MOV CL,SIZE ARY 上述MOV指令序列执行后的结果是什么? AL=2、BL=10、CL=2*10=20
15、在汇编语言程序的开发过程中使用宏功能的顺序是(C)。 A、宏定义,宏调用 B、宏定义,宏展开 C、宏定义,宏调用,宏展开 D、宏定义,宏展开,宏调用 16、汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是(B)。 A、名字项 B、操作项 C、操作数项 D、注释项 17、编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(D)。 A、CMP B、SUB C、AND D、MOV 18、为使CX=-1时,转至MINUS而编制了指令序列,其中错误的序列是(C)。A、INC CX /JZ MINUS B、SUB CX,OFFFFH /JZ MINUS C、AND CX,OFFFFH/ JZ MINUS D、XOR CX,OFFFFH /JZ MINUS
4、DATA SEGMENT S9 DB 0,1,2,3,4,5,6,7,8,9 DATA ENDS ┇ LEA SI,S9 LEA,DI,S9+1 MOV CX,5 LOP:MOV AL,[SI] XCHG AL,[DI] MOV [SI],AL ADD SI,2 ADD DI,2 LOOP LOP 上述程序段运行后,S9开始的10个字节存储单元内容是什么?(1,0,3,2,5,4,7,6,9,8)
汇编语言程序例题

【例】试编写一程序计算以下表达式的值。
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 ENDSCODE SEGMENTMOV DS, AX;DATA→AXMOV AX, XIMUL Y;( X) * ( Y)→ DX: AXMOV CX, AXMOV BX, DX;(DX:AX)→(BX:CX)MOV AX, ZCWD;( Z)符号扩展ADD CX, AXADC BX, DX;( BX: CX) +( DX:AX)→( BX: CX)SUB CX, 540SBB BX, 0;(BX:CX)- 540→(BX:CX)MOV AX, VCWD;( V)符号扩展SUB AX, CXSBB DX, BXDX: AX);( DX: AX) - ( BX:CX)→(IDIV X;(DX:AX)/XMOV W, AX;商→WMOV W+2, DX ;余数 DX→W+2MOV AH, 4CHINT 21HCODE ENDS;退出DOS状态END START【例】已知某班学生的英语成绩按学号(从 1 开始)从小到大的次序排列在TAB表中,要查的学生的学号放在变量NO中,查表结果放在变量ENGLISH中。
编写程序以下:DB 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 ENGLISH, ALMOV AH, 4CHINT 21HCODE ENDSEND BEGIN【例】已知在内存中有一个字节单元 NUM,存有带符号数据,要求计算出它的绝对值后,放入 RESULT单元中。
汇编语言程序设计例题(2003)

;子程序
HEX_ASC: MOV R1, SP DEC R1 DEC R1 XCH A, @R1 ANL A, #0FH ADD A, #2 MOVC A, @A+PC XCH A, @R1 RET ASC_TAB: DB 30H,31H,32H,33H,34H,35H,36H,37H DB 38H,39H,41H,42H,43H,44H,45H,46H
例 4.4 试将 8位二进制数据转换为十
进制(BCD码)数据。
参考程序:
ORG 2000H
MOV A ,20H
MOV B,#100ຫໍສະໝຸດ DIV ABMOV 31H,A
MOV A,B
MOV B,#10
DIV AB
SWAP A
ORL A,B
MOV 30H,A
SJMP $
END
例4.5
求8位有符号数的补码。设
8 位二进制数存放在片内 RAM 30H单元内。
参考程序: ORG 0000H MOV A, 30H JNB ACC.7, NEXT CPL A ORL A, #80H INC A MOV 30H, A NEXT: SJMP NEXT END
例4.6
试编写计算下式的程序:
设 X 存在 40H 单元中,结果 Y 存 放于41H中。
例 4.15
用 4 个按键控制 8 只 LED 灯的
显示,按下S1键,D3、D4对应灯亮; 按下S2键,D2、D5对应灯亮;按下S3
键,D1、D6对应灯亮;按下S4键,D0、
D7对应灯亮;不按键,D2、D3、D4、 D5对应灯亮。
参考程序: #include <REG51.H> #define uint unsigned int sbit KEY_S1=P3^0; sbit KEY_S2=P3^1; sbit KEY_S3=P3^2; sbit KEY_S4=P3^3; /* ------延时子函数------*/ void delay(uint k,m) { uint i,j; for(i=0;i<k;i++) { for(j=0;j<m;j++) {;} } }
汇编语言典型例题

汇编语言典型例题汇编语言是一种底层的编程语言,它直接操作计算机硬件,并且与特定的计算机体系结构密切相关。
本文将介绍一些汇编语言的典型例题,帮助读者更好地理解和掌握这门编程语言。
例题一:计算两个数的和要求:编写一段汇编语言程序,计算两个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.将8进制的数23转化为3进制的数,其值为(201)。
23(8)=2*8^1+3*8^0=19(10) 19(10)=201(3)2.汇编语⾔程序的开发过程要经历编辑、(汇编)、链接和运⾏调试等⼏个阶段。
3.Intel 8086 CPU中的段寄存器有CS、DS、ES和(SS)。
段寄存器CS、DS、ES、SS4.汇编语⾔指令中操作数分为⽴即数操作数、寄存器操作数和(内存操作数)三类。
5.永远指向堆栈段栈顶单元的寄存器为(SP)。
6. 英⽂⼤写字母A的ASCII码为41H,则英⽂⼤写字母D的ASCII码为(44H)。
A=41H B=42H C=43H D=44H...7. BCD码分为压缩的BCD码和(⾮压缩BCD码)两类。
8. 8086/8088CPU有(20)根地址线,可寻址1M字节的内存空间。
8086/8088CPU提供的地址总线有20位,2的20次⽅等于1M同理,寄存器是16位的,所以就是2的16次⽅等于64K9.80x86CPU有实模式和保护模式两种操作模式,⽽8086/8088CPU只能⼯作在(实)模式下。
10.(堆栈)是内存中的⼀块特定区域,其中的内容是按照后进先出的原则进⾏操作的。
11. 8086/8088CPU中变址寄存器有SI和(DI )两个。
12.主程序和⼦程序之间的参数传递通常有如下三种⽅法:通过寄存器传递、通过存储器传递和通过(堆栈)传递。
13.循环指令loop指令隐含的计数器是(CX )寄存器。
14. 已知8位⼆进制表⽰的整数X的补码为10011011,则-X的补码的⼆进制编码为(01100101)。
先各位取反,0变成1,1变成0。
然后最低位加⼀。
例⼦11111111,0011100;X=10011011 -X=01100101 -2X=(-X左移⼀位补零,多的那位忽略)11001010;1/2 X=11001101(看X,右移⼀位原来第⼀位是什么现在还是什么) ;-1/2X=00110010(同理,看-X)15.有如下定义:BUF DW 4,6,$+2,若汇编时BUF分配的偏移地址是0042H,则汇编后BUF数组中第三个字的值是(0048h)。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
【例】试编写一程序计算以下表达式的值。
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 ENDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACKSTART:MOV AX,DATAMOV DS,AX ;DATA→AXMOV AX,XIMUL Y ;(X)*(Y)→DX:AXMOV CX,AXMOV BX,DX ;(DX:AX)→(BX:CX)MOV AX,ZCWD ;(Z)符号扩展ADD CX,AXADC BX,DX;(BX:CX)+(DX:AX)→(BX:CX)SUB CX,540SBB BX,0 ;(BX:CX)-540→(BX:CX)MOV AX,VCWD ;(V)符号扩展SUB AX,CXSBB DX,BX;(DX:AX)-(BX:CX)→(DX:AX)IDIV X ;(DX:AX)/XMOV W,AX ;商→WMOV W+2,DX ;余数DX→W+2MOV AH,4CHINT 21HCODE ENDS ;退出DOS 状态END START【例】已知某班学生的英语成绩按学号(从1开始)从小到大的顺序排列在TAB表中,要查的学生的学号放在变量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 DBDATA ENDSCODE SEGMENTASSUME DS:DATA,SS:STACK,CS:CODEBEGIN:MOV AX,DATAMOV DS ,AXLEA BX,TABMOV AL,NODEL ALXLAT T ABMOV ENGLISH,ALMOV AH,4CHINT 21HCODE ENDSEND BEGIN【例】已知在内存中有一个字节单元NUM,存有带符号数据,要求计算出它的绝对值后,放入RESULT单元中。
题目分析:根据数学中绝对值的概念知道,一个正数的绝对值是它本身,而一个负数的绝对值是它的相反数;要计算一个数的相反数,需要完成减法运算,即用0减去这个数。
8086/8088指令系统中有专门的求相反数的指令NEG。
DATA SEGMENTX DB -25RESULT DBDATA ENDSCODE SEGMENTASSUME DS:DATA,CS:CODESTART: MOV AX,DATAMOV DS,AX ;初始化MOV AL,X ;X取到AL中TEST AL,80H ;测试AL正负JZ NEXT ;为正,转NEXTNEG AL ;否则AL求补NEXT: MOV RESULT,AL ;送结果MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND S TART【例】编写计算下面函数值的程序:1 X>0Y= 0 X=0-1 X<0设输入数据为X、输出数据Y,且皆为字节变量。
程序流程图如下图所示。
DATA SEGMENTX DB -25Y DBDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AX ;初始化MOV AL,X ;X取到AL中CMP AL,0 ;Al中内容和0比较JGE BIG ;大于等于0,转BIGMOV BL,-1 ;否则为负数,-1送BLJMP EXIT ;转到结束位置BIG: JE EE ;Al中内容是否为0,为0转EEMOV BL,1 ;否则为大于0,1送BLJMP EXIT ;转到结束位置EE:MOV BL,0 ;0送BLEXIT: MOV Y,BL ;BL中内容送Y单元MOV AH,4CHINT 21H ;程序结束CODE ENDSEND START ;汇编结束【例】试编一程序,求三个带符号字数据中的最大值,并将最大值存入MAX字单元中。
设三个带符号数分别在三个字变量X、Y、Z中存储。
程序流程图如下图所示STACK SEGMENT STACKDB 200 DUP(0)STACK ENDSDATA S EGMENTX DW 00ABHY DW –5Z DW 200MAX D WDATA E NDSCODE S EGMENTASSUME DS:DATA,SS:STACK,CS:CODESTART:MOV AX,DATAMOV DS,AXMOV AX,XCMP A X,Y ;X>YJG L1MOV AX,Y ;Y>ZCMP A X,ZJG EXITL2:MOV AX,ZJMP EXITL1:C MP AX,Z ;X>ZJLE L2EXIT:MOV MAX,AXMOV AH,4CHINT 21HCODE ENDSEND START【例】设某程序有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:CODESTART: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【例】已知有几个元素存放在以BUF为首址的字节存贮区中,试统计其中正元素的个数。
显然,每个元素为一个8位有符号二进制数,统计其中正元素的个数可用循环程序实现。
其程序流程图如下图所示。
例】编写程序完成求1+2+3+……N的累加和,直到累加和超过1000为止。
统计被累加的自然数的个数送CN单元,累加和送SUM。
流程图如下图所示。
DATA SEGMENTSUM DWCN DWDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AX ;初始化MOV AX,0 ;0送AXMOV BX,0 ;0送BXLP: INC BX ;BX加1ADD AX,BX ;求累加和CMP AX,1000 ;比较JBE LP ;≤1000转MOV SUM,AXMOV CN,BX ;送结果MOV AH,4CHINT 21H ;返回DOSCODE ENDSEND START ;汇编结束【例】在以BUF为首址的字存储区中存放有N个有符号数,现需将它们按大到小的顺序排列在BUF存储区中,试编写其程序。
我们采用冒泡排序算法从第一个数开始依次对相邻两个数进行比较,如次序对,则不交换两数位置;如次序不对则使这两个数交换位置。
可以看出,第一遍需比较(N-1)次,此时,最小的数已经放到了最后;第二遍比较只需考虑剩下的(N-1)个数,即只需比较(N-2)次;第三遍只需比较(N-3)次,……整个排序过程最多需(N-1)遍。
如下面的4个数即是采用冒泡排序比较的例子。
数10 8 16 90 32第一遍10 16 90 32 8第二遍16 90 32 10 8第三遍90 32 16 10 8程序流程图如图所示。
DATA S EGMENTBUF DW 3,-4,6,7,9,2,0,-8,-9,-10,20N=($-BUF)/2DATA E NDSSTACK SEGNMENT STACKDB 200 DUP(0)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV CX,NDEC CXLOOP1:MOV DX,CXMOV BX,0LOOP2:MOV AX,BUF[BX]CMP A X,BUF[BX+2]JGE LXCHG AX,BUF[BX+2]MOV BUF[BX],AXL:ADD BX,2DEC CXJNE LOOP2MOV 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”即可。
【例】将一个给定的二进制数按位转换成相应的ASCII码字符串,送到指定的存储单元并显示。
如二进制数转换成字符串为‘’。
要求将转换过程写成子程序,且子程序应具有较好的通用性,而必须能实现对8倍和16倍二进制数的转换。
入口参数:DX存放待转换的二进制数CX存放待转换数的位数(8位或16位)DI存放ASCII码首地址出口参数:转换后的字符串存放在以DI作指针的字节存贮区中程序清单:DATA S EGMENTNUM8 DB 93HNUM16 DW 0ABCDHASCBUF DB 20 DUP(0)DATA E NDSCODE SEGMENTASSUME DS:DATA,CS:CODE,SS:STACKSTART:MOV AX,DATAMOV DS,AXMOV DX,0MOV DL,NUM8 ;转换二进制数送DXMOV CX,8 ;置位数8LEA DI,ASCBUF ;字符串首址→DICALL B TASC ;调用子程序BTASCMOV [DI],BYTE PTR 0DHMOV [DI+1],BYTE PTR 0AHMOV [DI+2],BYTE PTR ‘$’LEA DX,ASCBUFMOV AH,9INT 21HMOV DX,NUM16MOV CX,16 ;置位数16LEA DI,ASCBUFCALL B TASCMOV[DL],BYTE PTR 0DHMOV [DL+1],BYTE PTR 0AHMOV [DL+2],BYTE PTR ‘$’;显示转换后的字符串 LEA DX,ASCBUFMOV AH,9INT 21HBTASC PROCPUSH AX ;保存AXMOV AL,0CMP C X,8 ;比较8位数JNE L1 ;直接转换16位数MOV DH,DL ;8位数转换送DHL1: ROL DX,,1 ;DX最高位移入CFRCL AL,1 ;CF移入AL最低位ADD AL,30HMOV [DI],ALINC DILOOP L1POP AXRETBTASC ENDPCODE ENDSEND START。