汇编经典代码
常见汇编代码

常见汇编代码汇编语言是一种低级语言,主要用于编写计算机的指令集。
在程序开发和系统调试中,掌握常见的汇编代码是非常重要的。
本文将介绍一些常见的汇编代码及其用途。
一、数据传输指令1. MOV:将数据从一个位置复制到另一个位置。
例如,MOV AX, BX将BX寄存器中的数据复制到AX寄存器中。
2. XCHG:交换两个位置的数据。
例如,XCHG AX, BX将AX寄存器和BX寄存器中的数据进行交换。
3. PUSH:将数据推入栈中。
例如,PUSH AX将AX寄存器的数据推入栈中。
4. POP:将数据从栈中弹出。
例如,POP AX将从栈中弹出的数据存储到AX寄存器中。
二、算术指令1. ADD:将两个数相加并将结果存储在目标位置。
例如,ADD AX, BX将AX寄存器和BX寄存器中的数据相加,并将结果存储到AX寄存器中。
2. SUB:将两个数相减并将结果存储在目标位置。
例如,SUB AX, BX将AX寄存器中的数据减去BX寄存器中的数据,并将结果存储到AX寄存器中。
3. MUL:将两个数相乘并将结果存储在目标位置。
例如,MUL AX, BX将AX寄存器和BX寄存器中的数据相乘,并将结果存储到AX寄存器中。
4. DIV:将两个数相除并将结果存储在目标位置。
例如,DIV AX, BX将AX寄存器中的数据除以BX寄存器中的数据,并将商存储到AX寄存器中。
三、逻辑指令1. AND:对两个数进行逻辑与操作,并将结果存储在目标位置。
例如,AND AX, BX将AX寄存器和BX寄存器中的数据进行逻辑与操作,并将结果存储到AX寄存器中。
2. OR:对两个数进行逻辑或操作,并将结果存储在目标位置。
例如,OR AX, BX将AX寄存器和BX寄存器中的数据进行逻辑或操作,并将结果存储到AX寄存器中。
3. XOR:对两个数进行逻辑异或操作,并将结果存储在目标位置。
例如,XOR AX, BX将AX寄存器和BX寄存器中的数据进行逻辑异或操作,并将结果存储到AX寄存器中。
汇编语言程序代码

汇编语言程序代码尽管现代编程语言如Java、Python等变得越来越流行,但汇编语言仍然是计算机科学领域中重要的一部分。
汇编语言是一种低级语言,它直接与计算机的硬件交互。
本文将介绍一些常见的汇编语言程序代码示例,帮助读者更好地理解和应用汇编语言。
1. 汇编语言入门汇编语言是一种基于机器指令的编程语言,它将符号标签与机器指令一一对应。
下面是一个简单的汇编语言程序示例:```assemblysection .datamessage db "Hello, World!", 0section .textglobal _start_start:; write the message to standard outputmov eax, 4 ; system call number for writemov ebx, 1 ; file descriptor for standard outputmov ecx, message ; pointer to the messagemov edx, 13 ; message lengthint 0x80 ; trigger the system call; exit the programmov eax, 1 ; system call number for exitxor ebx, ebx ; exit code 0int 0x80 ; trigger the system call```以上汇编代码实现了在屏幕上输出"Hello, World!"的功能。
它使用了Linux内核的系统调用接口来完成输入输出操作。
2. 汇编语言的数据处理汇编语言可以直接对计算机的寄存器和内存进行操作,因此具有较高的灵活性和效率。
下面是一个将两个数字相加并输出结果的示例:```assemblysection .datanum1 dd 42num2 dd 23result dd 0section .textglobal _start_start:; load the values of num1 and num2 into registers mov eax, [num1]mov ebx, [num2]; add the valuesadd eax, ebx; store the result into memorymov [result], eax; convert the result to string for printingmov ebx, resultmov ecx, 10xor edx, edxdiv ecxadd edx, '0'mov byte [ebx+4], dlmov ax, dxxor edx, edxdiv ecxadd edx, '0'mov byte [ebx+3], dlmov ax, dxxor edx, edxdiv ecxadd edx, '0'mov byte [ebx+2], dlmov ax, dxxor edx, edxdiv ecxadd edx, '0'mov byte [ebx+1], dlmov ax, dxadd al, '0'mov byte [ebx], al; write the result to standard output mov eax, 4mov ebx, 1mov ecx, resultmov edx, 5int 0x80; exit the programmov eax, 1xor ebx, ebxint 0x80```以上汇编代码将数字42和23相加,并将结果输出到屏幕上。
常用汇编指令

常用汇编指令汇编语言是一种低级机器语言的抽象表示,通过使用汇编指令可以编写出与硬件相关的程序。
在计算机科学领域中,汇编指令是非常重要的,是理解计算机底层原理和实现的关键。
本文将介绍一些常用的汇编指令,以帮助读者更好地理解和应用这些指令。
一、数据传输指令1. MOV指令:MOV指令用于将数据从一个位置复制到另一个位置。
例如,MOV AX, BX将寄存器BX的内容复制到AX中。
2. LEA指令:LEA指令用于将内存地址加载到寄存器中。
例如,LEA BX, [SI+10]将[S1+10]的内存地址加载到寄存器BX中。
3. PUSH指令:PUSH指令用于将数据压入栈中。
例如,PUSH AX将AX中的数据压入栈中。
4. POP指令:POP指令用于从栈中弹出数据。
例如,POP BX将栈中的数据弹出到BX中。
二、算术运算指令1. ADD指令:ADD指令用于将两个操作数相加,并将结果存储在目标操作数中。
例如,ADD AX, BX将BX的值加到AX中。
2. SUB指令:SUB指令用于将源操作数的值从目标操作数中减去,并将结果存储在目标操作数中。
例如,SUB AX, BX从AX中减去BX的值。
3. MUL指令:MUL指令用于将源操作数与累加器中的值相乘,并将结果存储在累加器中。
例如,MUL BX将累加器的值与BX相乘。
4. DIV指令:DIV指令用于将累加器的值除以源操作数,并将商存储在累加器中,余数存储在另一个寄存器中。
例如,DIV BX将累加器的值除以BX。
三、逻辑运算指令1. AND指令:AND指令用于对两个操作数进行逻辑与运算,并将结果存储在目标操作数中。
例如,AND AX, BX将AX与BX进行逻辑与操作。
2. OR指令:OR指令用于对两个操作数进行逻辑或运算,并将结果存储在目标操作数中。
例如,OR AX, BX将AX与BX进行逻辑或操作。
3. NOT指令:NOT指令用于对操作数进行逻辑非运算,并将结果存储在目标操作数中。
(完整版)8086汇编经典例程,推荐文档

sub bl,26 mov al,'a' add al,bl
MOV CX,00H WAIT1: LOOP WAIT1
;延时计数器 ;延时
DW 2 DUP (25*8,25*8,50*8) DW 12 DUP (25*8),100*8
jmp next40
DEC DX
next24: sub bl,52
==========================================
MAIN ENDP
MOV AX,[SI]
5. 编写一个数组排序(从小到大)的小程序,数组在程
序中定义,程序先将原数组显示一遍,然后排序,再
DISP PROC
将排好序的数组显示一遍。
PUSH SI
==========================================
MUS_TIME2 DW 3 DUP(50),25,25,50,25,25,100 DW 2 DUP(50,50,25,25),100 DW 3 DUP(50,25,25),100
crlf proc push ax push dx
音演奏歌曲 ========================================== ;这是一个音乐程序,按大写字母“A”,唱乐曲“玛丽
ccc segment assume cs:ccc,ds:qqq
main proc far start: mov ax,qqq
mov ds,ax
next3:
jmp next10 cmp al,'a' jnae next4 cmp al,'z' ja next4 sub al,'a'
汇编的基本常用指令

汇编的基本常用指令汇编语言是一种底层的程序设计语言,主要用于编写机器码指令。
以下是一些常用的汇编指令:1. MOV:将数据从一个位置复制到另一个位置。
2. ADD:将两个操作数相加,并将结果存储在目的操作数中。
3. SUB:将第二个操作数从第一个操作数中减去,并将结果存储在目的操作数中。
4. INC:将一个操作数的值增加1。
5. DEC:将一个操作数的值减少1。
6. CMP:比较两个操作数的值,并将结果影响到标志寄存器中。
7. JMP:无条件跳转到指定的代码位置。
8. JZ / JE:当指定的条件成立时,跳转到指定的代码位置(零标志或相等标志)。
9. JNZ / JNE:当指定的条件不成立时,跳转到指定的代码位置(非零标志或不相等标志)。
10. JL / JB:当源操作数小于目的操作数时,跳转到指定的代码位置(小于标志或借位标志)。
11. JG / JA:当源操作数大于目的操作数时,跳转到指定的代码位置(大于标志或进位标志)。
12. CALL:调用一个子程序或函数。
13. RET:返回子程序或函数的调用处。
14. NOP:空操作,用于占位或调整程序代码的位置。
15. HLT:停止运行程序,将CPU置于停机状态。
这里只列举了一些基本的汇编指令,实际上汇编语言有更多更复杂的指令,具体使用哪些指令取决于所使用的汇编语言和目标处理器的指令集架构。
继续列举一些常用的汇编指令:16. AND:将两个操作数进行按位与运算,并将结果存储在目的操作数中。
17. OR:将两个操作数进行按位或运算,并将结果存储在目的操作数中。
18. XOR:将两个操作数进行按位异或运算,并将结果存储在目的操作数中。
19. NOT:对一个操作数的每一位进行取反操作。
20. SHL / SAL:将一个操作数的每一位向左移动指定的位数。
对于无符号数,使用SHL指令;对于带符号数,使用SAL指令。
21. SHR:将一个操作数的每一位向右移动指定的位数,高位空出的位使用0填充。
常用汇编代码

# 常见汇编代码 #1. 编写程序:比较AX,BX,CX中带符号数的大小,将最大的数放在AX中code segmentassume cs:codemov ax,32mov bx,74mov cx,23sort: cmp ax,bxjge X ;如果ax大于等于bx就跟cx比较xchg ax,bxX:cmp ax,cx ;如果ax大于cxjge Yxchg ax,cxY:int 21hmov ax,4c00hcode endsend sort2.要求对键盘输入的小写字母用大写字母显示出来code segmentassume cs:codestart: mov ah,1int 21hcmp al,'a'jz errorcmp al,'z'ja errorsub al,20h ;'A'~'Z':41~5AH ‘a'~'z':61~7ahmov dl,almov ah,2int 21hjmp starterror:retcode endsend start3.编写程序:从键盘上接收一个四位数的十进制数,并在终端上显示出与它等值的二进制数。
code segmentassume cs:codebegin:xor bx,bx ;清空bxmov ch,4mov cl,4 ;设置内外层的循环次数input:shl bx,cl ;bx中的内容逻辑左移mov ah,1int 21h ;输入cmp al,30h ;是否小于0jb input ;是就重新输入cmp al,39h ;是否大于9ja inputand al,0fh ;转换为相应的二进制jmp combinecombine:or bl,aldec chjnz inputdisplay:mov cx,16 ;输出的循环次数print:mov dl,0rol bx,1rcl dl,1or dl,30h ;清空dlmov ah,2int 21hloop printretcode endsend begin4.将内存ffff:0~ffff:d单元中的数据复制到0:200~0:20d单元中。
单片机汇编语言经典一百例

单片机汇编语言经典一百例汇编语言是一种底层的程序设计语言,是一种将汇编指令直接翻译成机器指令的语言。
在单片机编程中,掌握汇编语言是非常重要的,因为它可以充分发挥单片机的性能,并且提高程序的运行效率。
本文将介绍一百个经典的单片机汇编语言例子,帮助读者更好地理解汇编语言的使用。
1. 点亮LED灯```ORG 0x0000 ; 程序起始地址MOV P1, #0xAA ; P1口输出高电平,LED灯点亮END ; 程序结束```2. LED流水灯效果```ORG 0x0000 ; 程序起始地址MOV P1, #0x01 ; P1口输出低电平,第一个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x02 ; P1口输出低电平,第二个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x04 ; P1口输出低电平,第三个LED点亮CALL DELAY ; 调用延时函数MOV P1, #0x08 ; P1口输出低电平,第四个LED点亮CALL DELAY ; 调用延时函数…DELAY: ; 延时函数MOV R0, #100 ; 设置延时时间DELAY_LOOP:DJNZ R0, DELAY_LOOP ; 循环减一RET ; 返回END ; 程序结束```3. 数码管动态扫描显示```ORG 0x0000 ; 程序起始地址CLR P0.0 ; P0.0口输出低电平,选择第一个数码管MOV P2, #0x7E ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.1 ; P0.1口输出低电平,选择第二个数码管MOV P2, #0x30 ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.2 ; P0.2口输出低电平,选择第三个数码管MOV P2, #0x6D ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数CLR P0.3 ; P0.3口输出低电平,选择第四个数码管MOV P2, #0x79 ; 将数码管对应的值存放到P2口CALL DELAY ; 调用延时函数…DELAY: ; 延时函数MOV R0, #100 ; 设置延时时间DELAY_LOOP:DJNZ R0, DELAY_LOOP ; 循环减一RET ; 返回END ; 程序结束```...通过以上例子,我们可以看到单片机汇编语言的应用非常广泛,可以实现各种各样的功能。
汇编语言代码例子

汇编语言代码例子汇编语言代码例子是指使用汇编语言编写的代码,它是机器语言的一种表示形式,主要用于编写计算机的低级程序,而不是用于创建高级程序。
汇编语言的特点是可以迅速地将机器指令转换为机器代码,并且可以编写出非常高效的程序,也就是所谓的“驱动程序”,它们能够直接控制计算机硬件,如CPU、内存和磁盘。
汇编语言代码例子包括:1. MOV 命令。
MOV 是移动指令,是把某个寄存器中的值移动到另一个寄存器中,或者把内存地址中的值移动到寄存器中,如:mov ax, bx 将bx中的值移动到ax中。
2. ADD 命令。
ADD 是加法指令,是把某个寄存器中的值和另一个寄存器中的值相加,或者把内存地址中的值和寄存器中的值相加,如:add ax, bx 将bx中的值和ax中的值相加。
3. SUB 命令。
SUB 是减法指令,是把某个寄存器中的值和另一个寄存器中的值相减,或者把内存地址中的值和寄存器中的值相减,如:sub ax, bx 将bx中的值从ax中减去。
4. MUL 命令。
MUL 是乘法指令,是把某个寄存器中的值和另一个寄存器中的值相乘,或者把内存地址中的值和寄存器中的值相乘,如:mul ax, bx 将bx中的值和ax中的值相乘。
5. DIV 命令。
DIV 是除法指令,是把某个寄存器中的值和另一个寄存器中的值相除,或者把内存地址中的值和寄存器中的值相除,如:div ax, bx 将bx中的值从ax中除去。
6. CMP 命令。
CMP 是比较指令,是把某个寄存器中的值和另一个寄存器中的值进行比较,或者把内存地址中的值和寄存器中的值进行比较,如:cmp ax, bx 将bx中的值和ax中的值进行比较。
7. JMP 命令。
JMP 是跳转指令,是根据条件跳转到指定的指令处执行,如:jmp label 跳转到“label”标记处执行。
8. CALL 命令。
CALL 是调用指令,是把子程序调用到当前程序中,如:call subroutine 调用名为“subroutine”的子程序。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.顺序程序设计将两个多位十进制数相加,要求被加数、加数均以ASCⅡ码形式各自顺序存放在以DATA1和DATA2为首的五个内存单元中(低位在前),结果送回DATA1处。
DATA SEGMENTDATA1 DB 34H,35H,39H,38H,36H,' ' ;被加数DATA2 DB 37H,34H,33H,36H,32H,' ' ;加数DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA SI,DATA1 ;有效地址送SI,为调用显示子程序做准备CALL DISPLAY ;调用显示子程序CALL CRLF ;调用回车换行子程序LEA SI,DATA2 ;有效地址送SI,为调用显示子程序做准备,同时为加法运算做准备CALL DISPLAY ;调用显示子程序CALL CRLF ;调用回车换行子程序LEA DI,DATA1 ;有效抵制送DI,为加法运算做准备MOV AX,0MOV BX,0MOV CL,05H ;记录循环次数ADDS: MOV AL,[SI] ;将加数送往ALSUB AL,30HADD AL,BL ;加上进位MOV BL,[DI] ;将被加数送往BLSUB BL,30HADD AL,BL ;加法运算ADD AL,30HCMP AL,3AHJA SUBA ;结果>=10,跳到SUBAJB NSUBASUBA: SUB AL,0AH ;减去10的值,并置BL为1MOV BL,01HJMP CONTINUENSUBA: MOV BL,00H ;置BL为0CONTINUE:MOV [DI],AL ;将相加的结果从AL送往DI的地址,即DATA1的地址INC DI ;地址加1INC SI ;地址加1LOOP ADDS ;循环JC SHUCHUJNC SHUCHU2SHUCHU2: MOV AL,31H ;CF为1设置结果最高位为1JMP CONTINUE2SHUCHU:MOV AL,30H ;CF为0设置结果最高位为0CONTINUE2:MOV [DI],ALLEA SI,DATA1 ;将DATA1的有效地址送往SI,为调用DISPLAY子程序做准备CALL DISPLAY ;调用DISPLAY子程序MOV AX,4C00H ;返回DOSINT 21HMAIN ENDPCRLF PROC NEAR ;回车、换行于功能MOV DL,0DHMOV AH,02HINT 21HMOV DL,0AHMOV AH,02HINT 21HRETCRLF ENDPDISPLAY PROC NEAR ;显示于功能MOV BX,0006H ;记录循环次数DSL: MOV DL,[SI+BX-1] ;将有效地址内的内容送往DLMOV AH,02 ;2号功能输出INT 21HDEC BX ;BX自动减1JNZ DSLRETDISPLAY ENDPCODE ENDSEND START2 分支程序设计实验接收键盘输入字符,将其中的小写字母转换为大写字母并显示。
CODE SEGMENTMAIN PROC FARASSUME CS:CODESTART: MOV AH,00HINT 16HCMP AL,0DHJZ OVERCALL JUDGEMOV DL,ALMOV AH,02HINT 21HJMP STARTOVER: MOV AH,4CHINT 21HMAIN ENDPJUDGE PROC NEARCMP AL,'a'JB STOPCMP AL,'z'JA STOPSUB AL,20HSTOP: RETJUDGE ENDPCODE ENDSEND START3 循环程序设计实验统计一个有10人的班中,男、女生的人数各为多少。
将男生人数存入变量MAN、女生人数存入变量WOMAN中。
DATA SEGMENTMAN DB 0,0WOMAN DB 0,0STRING DB ' iuput people number! (man is 0, woman is 1 ) $'SM DB 'man is :$'SW DB 'woman is :$'DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AH,09H ;将STRING的内容输出MOV DX,OFFSET STRINGINT 21HCALL CRLFMOV CX,10 ;男女生总人数AA: MOV AH,01H ;从键盘输入,0为男,1为女INT 21HCMP AL,30H ;与'0'比较JNZ ADDW ;不为'0',女生人数加1INC MAN ;否则男生人数加1BB: LOOP AAJMP DISPLY ;打印ADDW: INC WOMANJMP BBDISPLY: CALL CRLFMOV AH,09H ;字符串输出MOV DX,OFFSET SMINT 21HMOV AH,02H ;男生人数统计结果输出MOV DL,MANADD DL,30HCALL JUDGECALL CRLFMOV AH,09H ;字符串输出MOV DX,OFFSET SWINT 21HMOV AH,02H ;女生人数统计结果输出MOV DL,WOMANADD DL,30HCALL JUDGEMOV AH,4CH ;返回DOSINT 21HMAIN ENDPJUDGE PROC NEAR ;判断结果是否为39HCMP DL,3AHJZ SHICC: INT 21HRETSHI: MOV DL,31HINT 21HMOV DL,30HJMP CCJUDGE ENDPCRLF PROC NEAR ;回车换行子程序MOV AH,02H ;回车MOV DL,0DHINT 21HMOV DL,0AH ;换行INT 21HRETCRLF ENDPCODE ENDSEND START4 子程序设计实验1.键盘输入字符,依次显示在行的最左端(即每接受一个字符,显示在屏幕上并回车换行。
)2.对频繁使用的回车换行编写为子程序,在主程序中调用完成分行显示。
CODE SEGMENTMAIN PROC FARASSUME CS:CODESTART: MOV CX,10 ;设置循环次数NEXT: MOV AH,01H ;从键盘输入一个字符INT 21HCALL CRLF ;调用回车换行子程序LOOP NEXTMOV AH,4CH ;返回DOSINT 21HMAIN ENDPCRLF PROC NEAR ;回车换行子程序MOV AH,02H ;回车MOV DL,0DHINT 21HMOV DL,0AH ;换行INT 21HRETCRLF ENDPCODE ENDSEND START5 码制转换程序实验将ASCⅡ码数据转换成二进制数据。
要求从键盘上输入十进制整数(假定范围0~32767),然后转换成二进制格式存储。
DATA SEGMENTSTRING1 DB 'PLEASE INPUT A NUMBER(0~32767):$'STRING2 DB 'THE ASCII IS:$'STRING3 DB 'THE BINARY IS:$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAMAIN PROC FARSTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1MOV AH,09HINT 21HCALL CRLFINPUT: MOV AH,01H ;输入数据INT 21HCMP AL,0DHJZ NEXTSUB AL,30HJL INPUTCMP AL,39HJG INPUTCBWXCHG AX,BX ;AX为输入值,BX保存结果,两个对调为MUL做准备MOV DX,10D ;将上一次结果乘10MUL DXXCHG AX,BX ;AX为本次输入的值,BX为之前的结果ADD BX,AXJMP INPUTNEXT: CALL CRLFMOV CL,4DMOV CH,4DMOV DX,OFFSET STRING2MOV AH,09HINT 21HCALL CRLFLOOP0: ROL BX,CL ;循环左移,将最高为存到BL的低四位MOV AL,BLAND AL,0FH ;ADD AL,30HCMP AL,3AHJL OUTPUTADD AL,07HOUTPUT:MOV AH,02HMOV DL,ALINT 21HDEC CHJNZ LOOP0CALL CRLFMOV DX,OFFSET STRING3MOV AH,09HINT 21HCALL CRLFMOV CH,16DMOV CL,1DLOOP1: ROL BX,CLMOV AL,BLAND AL,01HADD AL,30HMOV AH,02HMOV DL,ALINT 21HDEC CHJNZ LOOP1MOV AH,4CHINT 21HMAIN ENDPOUTS PROC NEAR ;字符串输出子程序MOV AH,09HINT 21HRETOUTS ENDPCRLF PROC NEAR ;回车换行子程序MOV AH,02H ;回车INT 21HMOV DL,0AH ;换行INT 21HRETCRLF ENDPCODE ENDSEND START6 两个数相乘的实验实现十进制数的乘法,被乘数和乘数均以ASCⅡ码形式放在内存中,乘积在屏幕上显示出来。
DATA SEGMENTMBCS DW 0MCS DW 0RESULT DW 0STRING1 DB 'THE BEICHENGSHU IS:$'STRING2 DB 'THE CHENGSHU IS:$'STRING3 DB 'THE RESULT IS:$'STRING DB 'THE ASCII IS:$'DATA ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET STRING1CALL OUTSCALL INPUT ;输入被乘数MOV DX,OFFSET STRINGCALL OUTSCALL CRLFCALL ASCII ;被乘数转化为ASCII码输出CALL CRLFMOV MBCS,BX ;被乘数保存到MBCS中MOV DX,OFFSET STRING2CALL OUTSCALL INPUT ;输入乘数MOV DX,OFFSET STRINGCALL OUTSCALL CRLFCALL ASCII ;乘数转化为ASCII码输出CALL CRLFMOV MCS,BX ;乘数保存到MCS中MOV DX,OFFSET STRING3CALL OUTSCALL CRLFMOV AX,MBCS ;被乘数MUL BX ;乘数与被乘数相乘,结果高位DX,低位AXMOV RESULT,AX ;将AX中的内容保存到RESULT中MOV BX,DX ;将高位DX的值送给BX输出CALL ASCIIMOV BX,RESULT ;将低位AX的值送给BX输出CALL ASCIIMOV AH,4CHINT 21HMAIN ENDPINPUT PROC NEAR ;输入十进制数,将其转化为ASCII码存到BX中CALL CRLFMOV BX,0AA: MOV AH,01HINT 21HCMP AL,0DHJZ STOPSUB AL,30HJL AACMP AL,39HJG AACBWXCHG AX,BX ;AX为输入值,BX保存结果,两个对调为MUL做准备MOV DX,10D ;将上一次结果乘10MUL DXXCHG AX,BX ;AX为本次输入的值,BX为之前的结果ADD BX,AXJMP AASTOP: CALL CRLFRETINPUT ENDPASCII PROC NEARMOV CL,4DMOV CH,4DCC: ROL BX,CL ;循环左移,将最高为存到BL的低四位MOV AL,BLAND AL,0FH ;ADD AL,30HCMP AL,3AHJL BBADD AL,07HBB: MOV AH,02HMOV DL,ALINT 21HDEC CHJNZ CCRETASCII ENDPOUTS PROC NEARMOV AH,09HINT 21HRETOUTS ENDPCRLF PROC NEAR ;回车换行子程序MOV AH,02H ;回车MOV DL,0DHINT 21HMOV DL,0AH ;换行INT 21HRETCRLF ENDPCODE ENDSEND START7 从键盘输入数据并显示的程序编写程序将键盘接收到的四位十六进制数据转换为等值的二进制数,再显示在终端上。