汇编:寄存器输出

显示8个8位通用寄存器内容(十六进制)

disprb 显示8个8位通用寄存器内容(十六进制)

	 include io.inc
    .model small
    .stack
    .data
    .code
    .startup
    ;disprb 显示8个8位通用寄存器内容(十六进制)
    mov ax,1234h
    mov bx,5678h
    mov cx,9abch
    mov dx,0def0h
    call disprb
    .exit
    end

实现disprb

    .model small
    .stack
    .data
    .code
    .startup
    ;disprb 显示8个8位通用寄存器内容(十六进制)
    mov ax,1234h
    mov bx,5678h
    mov cx,9abch
    mov dx,0def0h
    call disprb
    .exit
disprb proc
    push ax
    push bx
    push cx
    push dx
    push dx
    push dx
    push cx
    push cx
    push bx
    push bx
    push ax
    mov bl,ah
    mov dx,0304h
    call dis
    pop ax
    mov bl,al
    mov dx,090Ah
    call dis
    pop bx
    mov bl,bh
    mov dh,15
    mov dl,16
    call dis
    pop bx
    mov dh,21
    mov dl,22
    call dis
    pop cx
    mov bl,ch
    mov dh,27
    mov dl,28
    call dis
    pop cx
    mov bl,cl
    mov dh,33
    mov dl,34
    call dis
    pop dx
    mov bl,dh
    mov dh,39
    mov dl,40
    call dis
    pop dx
    mov bl,dl
    mov dh,45
    mov dl,46
    call dis
    push ds
    mov ax,cs
    mov ds,ax
    lea dx,rbmsg
    mov ah,9
    int 21h
    pop ds
    pop dx
    pop cx
    pop bx
    pop ax
    ret
dis proc ;入口参数bl,dx
    push ds
    push dx
    push bx
    and bl,0f0h
    rol bl,1
    rol bl,1
    rol bl,1
    rol bl,1
    cmp bl,10
    jb d1
    add bl,7
d1: add bl,30h
    mov ax,cs
    mov ds,ax
    xor dl,dl
    mov cl,8
    rol dx,cl
    mov si,dx
    mov rbmsg[si],bl
    pop bx
    and bl,0fh
    cmp bl,10
    jb d2
    add bl, 7
d2: add bl,30h
    pop dx
    xor dh,dh
    mov si,dx
    mov rbmsg[si],bl
    pop ds
    ret
dis endp
rbmsg db 'AH=00,AL=00,BH=00,BL=00,CH=00,CL=00,DH=00,CL=00',13,10,'$'    
disprb endp
    end

显示8个8位通用寄存器内容(十六进制)

disprw 显示8个16位通用寄存器内容(十六进制)

    include io.inc
    .model small
    .stack
    .data
    .code
    .startup
    ;disprw 显示8个16位通用寄存器内容(十六进制)
    mov ax,1234h
    mov bx,5678h
    mov cx,9abch
    mov dx,0def0h
    call disprw
    .exit
    end

实现disprw

 
    .model small
    .stack
    .data
    .code
    .startup
    ;disprw 显示8个16位通用寄存器内容(十六进制)
    mov ax,1234h
    mov bx,5678h
    mov cx,9abch
    mov dx,0def0h
    call disprw
    int 3
    .exit
disprw proc
    push ds
    push ax
    mov ax,cs
    mov ds,ax
    pop ax
    push ax
    push bx
    push cx
    push dx
    mov ttttemp,ax
    mov ax,sp
    add ax,12 ;由于前面向栈压了5个,和call 压栈ip
    push ax
    mov ax,ttttemp
    push bp
    push di
    push si
    push dx
    push cx
    push bx
    push ax
    mov dx,3
    mov cx,8
wh: pop ax
    mov bx,dx
    call dis
    add dx,9
    loop wh
    lea dx,rwmsg
    mov ah,9
    int 21h
    pop dx
    pop cx
    pop bx
    pop ax
    pop ds
    ret
dis proc ;入口参数ax
    push cx
    push si
    mov si,bx
    lea bx,rwmsg
    mov cl,4
    mov ch,4
again:rol ax,cl
    push ax
    and al,0fh
    cmp al,10
    jb d1 
    add al,7
d1: add al,30h
    mov [bx+si],al
    pop ax
    inc si
    dec ch
    cmp ch,0
    jnz again
    pop si
    pop cx 
    ret
dis endp
rwmsg db 'AX=0000  BX=0000  CX=0000  DX=0000  SI=0000  DI=0000  BP=0000  SP=0000',13,10,'$'   
ttttemp dw ?
disprw endp
    end

显示6个状态标志的状态

标记位说明:

标志名标志为1标志为0
OF溢出(是/否)OVNV
DF方向(减量/增量)DNUP
IF中断(允许/关闭)EIDI
SF符号(负/正)NGPL
ZF零(是/否)ZRNZ
AF辅助进位(是/否)ACNA
PF奇偶(偶/奇)PEPO
CF进位(是/否)CYNC

参考博客

disprf 显示6个状态标志的状态

    include io.inc
    .model small
    .stack
    .data
    .code
    .startup
   ;disprf 显示6个状态标志的状态
    mov ax,12
    sub ax,23
    call disprf
    .exit
    end

实现disprf

    .model small
    .stack
rfbit macro bit1,bit2
    xor bx,bx
    mov cl,bit1
    rol ax,cl
    adc bx,30h
    mov rfmsg+bit2,bl
    endm
    .data
    .code
    .startup
    ;disprf 显示6个状态标志的状态
    mov ax,12
    sub ax,23
    call disprf
    .exit
disprf proc
    push ds
    push ax
    push bx
    push cx
    push dx
    pushf
    pop ax
    rfbit 5,3	;显示OF(原来的OF需左移5位,进入当前CF)
	rfbit 4,9	;显示SF(原来的SF再左移4位,进入当前CF)
	rfbit 1,15	;显示ZF(原来的ZF再左移1位,进入当前CF)
	rfbit 2,21	;显示AF(原来的AF再左移2位,进入当前CF)
	rfbit 2,27	;显示PF(原来的PF再左移2位,进入当前CF)
	rfbit 2,33	;显示CF(原来的CF再左移2位,进入当前CF)
	mov ax,cs
	mov ds,ax
	lea dx,rfmsg
	mov ah,9
	int 21h
	pop dx
	pop cx
	pop bx
	pop ax
	pop ds
	ret
rfmsg	db 'OF=0, SF=0, ZF=0, AF=0, PF=0, CF=0',13,10,'$'    
disprf endp    
    end
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值