您当前所在位置:首页手机游戏安卓游戏汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数

汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数

更新:2024-05-06 05:32:53编辑:BOSS软件库归类:安卓游戏人气:32

文章目录:

  1. 汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数
  2. 汇编语言 编写一个程序,将AL寄存器中的一位十六进制数转化成ASCII码...

一、汇编语言:编写一个程序,显示AL寄存器中的两位十六进制数

AAM

PUSH AX

MOV AH,2

POP BX

MOV DL,BH

ADD DL,30H

INT 21H

MOV AH,2

MOV DL,BL

ADD DL,30H

INT 21H

data segment

data ends

stack segment

db 256 dup(?)

stack ends

code segment

assume cs:code, ds:data, ss:stack

start:

mov ax, data

mov ds, ax

mov ax, stack

mov ss, ax

mov al, 0c5h

call disp_al

mov al, 065h

call disp_al

mov ah, 04ch

int 21h

;disp_al子程序将寄存器AL中的数值以十六进制显示出来

disp_al:

mov dh, al

mov bx, 2 ;bx用于循环,一个字节最多可以显示成两个字符,所以循环次数是2次

mov cl, 4 ;首先显示高4位,在下次循环进再显示低4位

shr al, cl

again:

and al, 0fh

cmp al, 9

ja hex

add al, '0' ;如果小于9,加上字符'0'将数字转换字符

jmp disp

hex:

sub al, 10 ;如果大于9,先减去10,再加上字符'A',就可以将数字转换成相应的'A'~'F'

add al, 'A'

disp:;利用中断显示字符

mov dl, al

mov ah, 02h

int 21h

mov al, dh

dec bx

test bx, bx

jnz again

ret

code ends

end start

二、汇编语言 编写一个程序,将AL寄存器中的一位十六进制数转化成ASCII码...

给你一个例子吧~~王爽汇编那本书的课程设计一中的代码

assume cs:codesg

data segment

db '1975','1976','1977','1978','1979','1980','1981','1982','1983'

db '1984','1985','1986','1987','1988','1989','1990','1991','1992'

db '1993','1994','1995'

;以上是表示21年的21个字符串

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514

dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

;以上是表示21年公司收入的21个dword型数据

dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226

dw 11542,14430,15257,17800

;以上是表示21年公司雇员人数的21个word型数据

data ends

showdata segment

db 10 dup(0)

showdata ends

datashop segment

db 10 dup(0)

datashop ends

codesg segment

start:

;数据

mov ax,data

mov ds,ax

;栈

mov ax,showdata

mov ss,ax

mov sp,12

;显示

mov ax,0b800h

mov es,ax

;初始化数据

mov cx,21

mov bx,0

mov bp,320

s: ;显示年份

call showyear

call showinfo

call showperson

call shownumber

add bx,4

add bp,160

loop s

mov ax,4c00h

int 21h

showyear:

;准备

push cx

mov cx,4

mov si,0

mov di,0

;开始

yearlp: mov al,[bx+si+0h]

mov es:[bp+di+0h],al

mov byte ptr es:[bp+di+1h],01000000b

inc si

add di,2

loop yearlp

pop cx

ret

showinfo:

;准备

push cx

;用于存储数据

mov ax,datashop

mov es,ax

;取出数字

mov si,0

mov ax,[bx+si+54h]

add si,2

mov dx,[bx+si+54h]

;规划

push ds

push es

pop ds

push bx

mov bx,0b800h

mov es,bx

;SI用来存放位置

mov si,1

;处理dx是两位数

cmp dx,0ah

ja div3

;处理dx是一位数

cmp dx,0

ja div2

;处理dx是0

mov di,10

jmp div1

div3:

mov di,100

div di

;把商压栈

push ax

;转移余数

mov ax,dx

xor dx,dx

;先处理余数

mov di,10

div di

mov [si],dl

inc si

xor dx,dx

div di

mov [si],dl

inc si

;恢复

pop ax

jmp div1

div2:

mov di,10

div di

mov [si],dl

inc si

div1:

mov bx,10

mov di,20h

call startdiv

pop bx

pop ds

pop cx

ret

showperson:

;准备

push cx

;START

;确定位置

mov ax,bx

xor dx,dx

mov di,2

div di

;取出数字

mov si,ax

mov ax,[si+0a8h]

;准备存储

push ds

push bx

mov di,40h

mov si,1

call show

;END

;恢复

pop bx

pop ds

pop cx

ret

shownumber:

;准备

push cx

;取出资金数字

mov si,0

mov ax,[bx+si+54h]

add si,2

mov dx,[bx+si+54h]

;准备

push dx

push ax

;取出人数数字

;确定位置

mov ax,bx

xor dx,dx

mov di,2

div di

;取出数字

mov si,ax

mov di,[si+0a8h]

;恢复被除数

pop ax

pop dx

;开始除法

div di

;储存商

push ds

push bx

mov di,60h

mov si,1

call show

;恢复

pop bx

pop ds

pop cx

ret

show:

mov cx,datashop

mov ds,cx

mov bx,10

startdiv:

xor dx,dx

div bx

mov [si],dl

cmp ax,0

je enddiv

inc si

jmp startdiv

enddiv:

mov cx,si

showwhat:

mov al,[si]

add al,30h

mov es:[bp+di],al

mov es:[bp+di+1h],al

dec si

add di,2

loop showwhat

ret

codesg ends

end start

这个在debug中运行-g可以查看效果

到此,以上就是小编对于al编写的问题就介绍到这了,希望介绍关于al编写的2点解答对大家有用。

Amysql_youhua_articlehuaunyuan($article);
al编写
找靓机上买安卓机皇小米11会出现翻新机吗? 医院被举报冒名产子:山东农家女被冒名顶替上大学,你怎么看
欧意国内注册 欧易国际注册 欧意交易所app官方下载

游客 回复需填写必要信息