汇编语言实验课:第九次记录


实验要求

1、显示有符号数
2、输入一个数,分别显示它的二进制和十六进制序列

一、程序

1.代码1

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov ax,-123
    mov bx,ax
    and bx,1000000000000000B
    je zheng
    push ax
    mov dl,'-'
    mov ah,2
    int 21h
    pop ax
    neg ax
    call output
    jmp over
zheng:
	push ax
	mov dl,'+'
	mov ah,2
	int 21h
	pop ax
	call output
	
over:
	
    MOV AH,4CH
    INT 21H
    
output proc    ;ax为入口参数

    push ax
    push bx
    push cx
    push dx
    
    ;初始化
    mov cl,10
    mov bl,0
    
    ;输出数字
output2:
    cmp al,0
    je output1
    div cl
    push ax
    add bl,1
    mov ah,0
    jmp output2
    
output1:
    cmp bl,0
    je output3
    pop cx
    sub bl,1
    mov dl,ch
    add dl,48
    mov ah,2
    int 21h
    jmp output1
output3:
    
    pop dx
    pop cx
    pop bx
    pop ax
    
    ret
output endp    
CODES ENDS
    END START

2.代码2

DATAS SEGMENT
    ;此处输入数据段代码  
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    mov	ax,10
    ;调用二进制函数
    call binary
	;回车换行
	mov ax,10
	call control
	;调用输出十六进制函数
	call decimal
	
    MOV AH,4CH
    INT 21H

;十进制转为二进制
binary proc	;ax为入口参数
	push ax
	push bx
	push dx
	push cx
L1:
    rol al,1
    mov bl,al
    and al,00000001b
    mov dl,al
    add dl,48
    mov ah,2
    int 21h
    mov al,bl
    add cl,1
    cmp cl,7
    je over
    jmp L1
    
over:
	pop cx
	pop bx
	pop dx
	pop cx
	ret
binary endp
	
;十进制转为十六进制
decimal proc	;ax为入口参数
	push bx
	push cx
	push ax
	push dx
	
	mov cl,16
	mov bl,0
D1:	
	cmp al,0
	je D2
	div cl
	push ax
	add bl,1
	mov ah,0
	jmp D1
	
D2:
	cmp bl,0
	je dover
	pop cx 
	sub bl,1
	mov dl,ch
	cmp dl,9
	ja D3
	add dl,48
	mov ah,2
	int 21h
	jmp D2
	
D3:
	add dl,55
	mov ah,2
	int 21h
	jmp D2
	
dover:
	pop dx
	pop ax
	pop cx
	pop bx
	ret
decimal endp
  
;回车换行
control proc
     
     push ax
     push dx
     
     mov dl,13
     mov ah,2
     int 21h
     mov dl,10
     mov ah,2
     int 21h
     
     pop dx
     pop ax
     
     ret
     
control endp 
CODES ENDS
    END START

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值