ZKX's LAB

汇编显示数字 汇编语言 如何显示数字

2020-07-21知识9

汇编:怎样显示数据,比如在屏幕上显示数字 12(新手求指教) 汇编语言编程在屏幕上显示数字12,可以调用DOS功能中断INT 21H完成。示例程序如下:data segmentnum db 12;需要显示的10进制数data endscode segmentassume cs:code,ds:datamain proc farstart:mov ax,datamov ds,axmov al,nummov ah,0div 10;12除以10mov dl,al;显示十位mov ah,02hint 21hmov dl,ah;显示个位mov ah,02hint 21hmov ah,4ch;结束程序int 21hretmain endpcode endsend start如何用汇编在命令提示符中显示1到9? 如何用汇编在命令提示符中显示1到9,汇编语言虽然现在不流行,但是其中的学问是非常深奥的,今天,我就和大家一起来交流一下,如何用汇编在命令提示符中显示1到9的数字。汇编语言怎样将数字输出,为什么? 如果要用汇编显示东西,一般是调用中断来完成的(一般是int 21h),这里的int 21h其实是一个子程序,他是系统(dos)本身帮你写好了的,不用你管,你只要按要求把东西提供给他他就会完成它的功能,在汇编书上一般都有int 21h的功能说明,其中在int 21h里有显示字符,显示字符串两个功能,如果你想调用int 21h里显示字符的功能,那你要在程序里让ah=02h,dl=要显示字符的asc码?就这样:mov ah,02hint 21h(假设dl里已经放好东西了)这样就会在屏幕上显示dl里面的对应的字符,同理显示字符串你看看书上也有。但是int 21h这个程序只有他们,而没有显示数字的功能,所以你要把想显示的数转换为asc或字符串才能用int 21h 显示。用汇编语言显示这样的数字组合:第一排是123456789第一列123456789然后从左上角开始123456789到右下角,其 MASM 5.0编译通过,运行无误.data segmentM1 DB 0dh,0ah,'0123456789',0dh,0ahDB '11',0dh,0ah,'$'M2 DB 32H,0DH,0AH,'$'data endscode segmentassume cs:code,ds:datamain proc farbegin:push dsmov ax,0push axMOV AX,DATAMOV DS,AXmov ah,9mov dx,offset m1int 21hMOV CX,8NEXT:MOV DL,M2MOV AH,2INT 21HPUSH CXXOR CX,CXMOV CL,M2SUB CL,31HL2:MOV AH,2MOV DL,' 'INT 21HLOOP L2MOV AH,09MOV DX,OFFSET M2INT 21HPOP CXINC M2LOOP NEXTretmain endpcode endsend begin单片机汇编语言数码管显示数字。。。。 MAIN:LOOP:ACALL SHOW1ACALL DELAYACALL SHOW6ACALL DELAYSJMP LOOPSHOW1:MOV P0,#06HSETB P2.6CLR P2.6MOV P0,#0FEHSETB P2.7CLR P2.7RETSHOW6:MOV P0,#7DHSETB P2.6CLR P2.6MOV P0,#0FDHSETB P2.7CLR P2.7RETDELAY:DEL1:NOPNOPDJNZ R7,DEL1RETEND用汇编语言显示这样的数字组合:第一排是123456789第一列123456789然后从左上角开始123456789到右下角,其 http://zhidao.baidu.com/question/494680378.html?oldq=1#reply-box-1240469340汇编输出横着0到9,竖着0到9,对角0到9MASM 5.0编译通过,运行无误。data segmentM1 DB 0dh,0ah,'0123456789',0dh,0ahDB '11',0dh,0ah,'$'M2 DB 32H,0DH,0AH,'$'data endscode segmentassume cs:code,ds:datamain proc farbegin:push dsmov ax,0push axMOV AX,DATAMOV DS,AXmov ah,9mov dx,offset m1int 21hMOV CX,8NEXT:MOV DL,M2MOV AH,2INT 21HPUSH CXXOR CX,CXMOV CL,M2SUB CL,31HL2:MOV AH,2MOV DL,' 'INT 21HLOOP L2MOV AH,09MOV DX,OFFSET M2INT 21HPOP CXINC M2LOOP NEXTretmain endpcode endsend begin汇编 显示十进制数 DATAS SEGMENTDATA DW 300,250,280,240,260ENTER1 DB 0AH,0DH,'$';这句话是什么意思?此处输入数据段代码N DB 3?这里直接赋值 0,OK!I DW 10NUM DB 0?这里直接赋值 5DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV DX,0MOV NUM,5MOV SI,0MOV N,0这一段是这样的:LP1:mov ax,data[si]cmp ax,0jz end_startcall DISadd si,2;因为 DATA 是双字节的jmp lp1end_start:mov ax,4c00int 21h;主程序到此结束了下面是显示程序,不要在主程序中运行了!DIS procxor cx,cx;计数清零lp2:mov dl,10div dlpush dx;于数压栈cmp ax,10;商小于 10 吗?jb disp_charinc cxjmp lp2disp_charmov dl,allp3:or d,30h;将数字转换成ASCII码mov ah,02hint 21hpop dxloopnz lp3retend start我没时间细看了。

#汇编语言

随机阅读

qrcode
访问手机版