进制转换3例

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

1、 键盘输入N个十六进制数据,每次一位(0~F),将其累加,和存放到SUM单元中;若输入非十六进制数则结束;再将SUM单元的值用十六进制数据换行输出。

data segment

num db ?

adtab dw addr1, addr2, addr4, addr8

tb1 db 'I am student2$'

tb2 db 'You are students3$'

tb4 db 'You are students5$'

tb8 db 'You are students9$'

next db 0dh,0ah,'$'

data ends

code segment

assume cs:code, ds:data

start:

mov ax,data

mov ds, ax

mov ah, 01h

int 21h

sub al, 30h

mov num,al

lea dx, next

mov ah, 09h

int 21h

mov al, num

lea bx, adtab

lop: shr ax, 1

jnc nxt

jmp word ptr [bx]

nxt: add bx, type adtab

jmp lop

addr1: lea dx,tb1

mov ah,09h

int 21h

jmp exit

addr2: lea dx,tb2

mov ah,09h

int 21h

jmp exit

addr4: lea dx,tb4

mov ah,09h

int 21h

jmp exit

addr8: lea dx,tb8

mov ah,09h

int 21h

exit: mov ah,4ch

int 21h

code ends

end start

2、 键盘输入N个十六进制数据,每次一位(0~F),将其累加,和存放到SUM单元中;若输入非十六进制数则结束;再将SUM单元的值用二进制数据换行输出。

data segment

num db ?

table db ?,?,?,?

next db 0dh,0ah,'$'

count dw 0

data ends

code segment

assume cs:code, ds:data

start:

mov ax,data

mov ds, ax

lop: mov ah, 01h

int 21h

cmp al, 0dh

jz outpush0

cmp al, '0'

jb other

cmp al, '9'

ja other

sub al, 30h

neg al

add al, 30h

mov si, count

mov table[si], al

mov cx, count

add cx, 1

mov count, cx

jmp lop

other:

mov si, count

mov table[si], al

mov cx, count

add cx, 1

mov count, cx

jmp lop

outpush0:

lea dx, next

mov ah, 9

int 21h

mov cx, 0

mov count, cx

mov bx, 4

outpush:

cmp bx, count

jz exit

mov si, count

mov dl, table[si]

mov ah, 2

int 21h

mov cx, count

add cx, 1

mov count, cx

jmp outpush

exit: mov ah,4ch

int 21h

code ends

end start

3、 键盘输入4个十六进制数据,将其对应的二进制数输出。

data segment

number0 db ?

number1 db ?

tb1 db 0dh,0ah,'jan',0dh,0ah,'$'

tb2 db 0dh,0ah,'fab',0dh,0ah,'$'

tb3 db 0dh,0ah,'mar',0dh,0ah,'$'

tb4 db 0dh,0ah,'apr',0dh,0ah,'$'

tb5 db 0dh,0ah,'may',0dh,0ah,'$'

tb6 db 0dh,0ah,'jun',0dh,0ah,'$'

tb7 db 0dh,0ah,'jly',0dh,0ah,'$'

tb8 db 0dh,0ah,'aug',0dh,0ah,'$'

tb9 db 0dh,0ah,'sep',0dh,0ah,'$'

tb10 db 0dh,0ah,'oct',0dh,0ah,'$'

tb11 db 0dh,0ah,'nov',0dh,0ah,'$'

tb12 db 0dh,0ah,'dec',0dh,0ah,'$'

next db 0dh,0ah,'$'

msg db 'Input a function number(1~12),end with "ENTER":','$'

ErrMsg db 0dh,0ah,'Invalid function number.', 0dh, 0ah,'$'

AddrTbl dw Func0,Func1,Func2,Func3,Func4,Func5,Func6,Func7,Func8,Func9,Func10,Func11

data ends

code segment

assume cs:code, ds:data

start: mov ax,data

mov ds,ax

lea dx, msg

mov ah, 9

int 21h

mov ah, 1

int 21h

mov number0, al

mov ah, 1

int 21h

mov number1, al

mov al, number1

cmp al, 0dh

jz equ1

add al, 10

jmp equal

equ1:

mov al, number0

equal:

cmp al, '0'

jc Error

cmp al, '<'

ja Error

sub al, 30h

mov ah, 0

mov bx, ax

shl ax, 1

mov bx, ax

jmp AddrTbl[bx]

Func0:

lea dx, tb1

jmp Output

Func1:

lea dx, tb2

jmp Output

Func2:

lea dx, tb3

jmp Output

Func3:

lea dx, tb4

jmp Output

Func4:

lea dx, tb5

jmp Output

Func5:

lea dx, tb6

jmp Output

Func6:

lea dx, tb7

jmp Output

Func7:

lea dx, tb8

jmp Output

Func8:

lea dx, tb9

jmp Output

Func9:

lea dx, tb10

jmp Output

Func10:

lea dx, tb11

jmp Output

Func11:

lea dx, tb12

jmp Output

Error:

lea dx, ErrMsg

jmp Output

Output:

mov ah, 9

int 21h

mov ah,4ch

int 21h

code ends

end start

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航