微机原理c转汇编语言,微机原理汇编语言10进制转16进制.doc

汇编语言程序

数制转换

将输入的一个数据以不同进制形式输出。

要求:

(a)所有数字从键盘输入;

(b)输入数据为任意一个小于十万的十进制数据;

(c)将所输入数据以十六进制在屏幕显示输出(即十进制转十六进制)。

; multi-segment executable file template.

data segment

; add your data here!

pkey db "press any key...$"

string db 'please input data: ',0dh,0ah,24h

shuzi dw 0

buffer dw 0 ;输入数字的暂存位置 输入的数字大于10 需要缓冲

string1 db 20h,20h,20h,20h,'output: ',0dh,0ah,24h

ends

stack segment

dw 128 dup(0)

ends

code segment

start:

; set segment registers:

mov ax, data

mov ds, ax

mov es, ax

xor ax,ax

mov buffer,ax

lea dx , string

mov ah, 09h

int 21h ;显示请输入数据

mov di , offset shuzi

mov ax , 0

biaohao1:

mov ah,08h

int 21h ; 输入保存在AL中

cmp al,0dh; 输入是回车,直接结束输入

je biaohao4

mov ah,2

mov dl,al ;显示此数

int 21h

sub al,30h

mov ah,0

push ax ; 保存刚输入的数字

mov bx,buffer

mov ax,10

mul bx ;ax=10*buffer

pop bx ; 将上面保存的ax 的值给bx

add ax,bx ;ax=10*buffer+bx(之前的ax) 输入的数字大于10

mov buffer,ax ;将ax 的值给buf

mov [di],ax ;若输入11,循环第一次输入是1,第二次重输入12

jmp biaohao1; 输入大于10 的数字的下一位

biaohao4: ;输入结束

lea dx , string1

mov ah, 09h

int 21h ;显示请输入数据

mov ax,shuzi

push ax

push ax ;保存ax

xor al,al

mov cl,4;;;;;将数字移至低八位判断 12到15

rol ax,cl

;显示al

cmp al,10

jnge biaohao5

add al,7

biaohao5:

add al,30h

mov ah,02

mov dl,al

int 21h

xor al,al

mov cl,4; 8到11

rol ax,cl

cmp al,10

jnge biaohao6

add al,7

biaohao6:

add al,30h

mov ah,02

mov dl,al

int 21h

pop ax ;4dao7

xor ah,ah

mov cl,4

rol al,cl

and al,0Fh ;al中高四位清零

;xianshi

cmp al,10

jnge biaohao7

add al,7

biaohao7:

add al,30h

mov ah,02

mov dl,al

int 21h

pop ax

xor ah,ah

and al,0Fh

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值