汇编利用B800段输出ASCII码表

来源:互联网 发布:淘宝假冒伪劣无需退货 编辑:程序博客网 时间:2024/06/06 11:40

汇编例子之修改B800显存段输出ascii码表

lines equ 19hrow_bytes equ 160 ;显存每行160bytescol_bytes equ 14dbottom_addr equ lines*row_bytesdata segmenttable db '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'data endscode segmentassume cs:code,ds:datastart:;清屏    MOV AX,3    INT 10H    mov ax,data    mov ds,ax;设置ES为显存起始地址    mov ax,0B800H ;字符模式    mov es,ax    xor bx,bx    xor si,si    xor di,di ;DI清0    xor cx,cxnextc:    ;输出ascii    mov dh,04h ;颜色    mov dl,cl    mov es:[bx+di],dx    ;输出hex    mov dh,02h ;颜色    mov si,cx    push cx    mov cl,4    shr si,cl    pop cx    mov dl,byte ptr table[si]    mov es:[bx+di+2],dx    mov si,cx    and si,0fh    mov dl,byte ptr table[si]    mov es:[bx+di+4],dx    ;输出dec mov dh,01h ;颜色 mov ax,cx ;百位数 mov dl,100  div dl mov dl,al add dl,30h ;转为ascii码    mov es:[bx+di+6],dx    ;十位数    mov al,ah    mov ah,0    mov dl,10    div dl    add ax,3030h ;转为ascii码    mov dl,al    mov es:[bx+di+8],dx    ;个位数    mov dl,ah    mov es:[bx+di+10],dx    add bx,row_bytes ;跳到下一行    cmp bx,bottom_addr    jb no_bottom    xor bx,bx    add di,col_bytesno_bottom:    inc cx ;ascii增加    cmp cx,255    jbe nextc    MOV AH,0    INT 16H    mov ax,4C00H    int 21Hcode endsend start


代码转载自百度知道:点击打开链接


原创粉丝点击