如何将存储器或寄存器中的内容在屏幕上显示出来?

阿木的汤 2005-05-29 02:38:33
如何将存储器或寄存器中的内容在屏幕上显示出来?
...全文
812 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
tpxc 2005-08-23
  • 打赏
  • 举报
回复
assume cs:code

data segment
str db 8 dup(0)
dw 10
data ends

stack segment
dw 8 dup(0)
stack ends

code segment
start: mov ax,data
mov ds,ax
mov bx,0
mov ax,stack
mov ss,ax
mov sp,16
mov dx,0
mov ax,12606 ;要显示的字就是这里拉
mov cx,0

dtoc: inc cx
div word ptr [bx+8]
push dx
mov dx,0
cmp ax,0
je s
jmp short dtoc

s: pop ax
add ax,30h
mov [bx],al
inc bx
loop s
mov [bx],byte ptr '$'
mov dx,offset str
mov ah,9
int 21h ;dos系统功能调用9号(显示字符串)
mov ax,4c00h
int 21h ;返回dos
code ends
end start
WYlslrt 2005-06-30
  • 打赏
  • 举报
回复
你可以将它改为masm书写格式
WYlslrt 2005-06-30
  • 打赏
  • 举报
回复
把我的操作系统中关于此功能的代码给你
bits 16
org 0
main:
mov ax,cs ;初始化
mov ss,ax
mov sp,07bffh
xor ax,ax
mov ds,ax
mov es,ax
;开始加载中断,为了避免段间错误,以后所有代码都有段超越前缀
;写入22h中断
cli
mov di,22h*4
mov ax,cs
mov [ds:di+2],ax ;向中断向量表写入段值
mov ax,WYOS_int22h_proc
mov [ds:di],ax ;向中断向量表写入偏移
;写入21h中断
mov di,21h*4
mov ax,cs
mov [ds:di+2],ax
mov ax,WYOS_int21h_proc
mov [ds:di],ax
sti
mov ax,cs
mov ds,ax
mov si,WYOSMSG
mov ah,0
int 22h
mov si,WYOSKNL
mov ax,50h
mov es,ax
mov di,0
mov ah,1
mov dx,1000h
mov bx,0
int 22h
jmp 1000h:0000
;加载完成,剩下的就是完成中断函数
jmp $ ;程序结束
;----------------------------------21h中断代码区------------------------------
;21h中断代码
WYOS_int21h_proc:
pusha
push bx
push ax
mov bx,7
mov ah,0eh
mov al,0dh
int 10h
mov al,0ah
int 10h ;重新换一行
;输出ax
mov al,'A'
int 10h
mov al,'X'
int 10h
mov al,'='
int 10h
pop ax ;取得ax,先输出ah,再输出al
push ax ;保存ax
mov al,ah
call SHOWALASCII
pop ax
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出cx
mov al,'C'
int 10h
mov al,'X'
int 10h
mov al,'='
int 10h
mov al,ch
call SHOWALASCII
mov al,cl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出DX
mov al,'D'
int 10h
mov al,'X'
int 10h
mov al,'='
int 10h
mov al,dh
call SHOWALASCII
mov al,dl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出BX
mov al,'B'
int 10h
mov al,'X'
int 10h
mov al,'='
int 10h
pop bx ;取得bx
mov cx,bx
mov bx,7
mov al,ch
call SHOWALASCII
mov al,cl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出SP
mov al,'S'
int 10h
mov al,'P'
int 10h
mov al,'='
int 10h
mov cx,sp
mov al,ch
call SHOWALASCII
mov al,cl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出BP
mov al,'B'
int 10h
mov al,'P'
int 10h
mov al,'='
int 10h
mov cx,bp
mov al,ch
call SHOWALASCII
mov al,cl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出SI
mov al,'S'
int 10h
mov al,'I'
int 10h
mov al,'='
int 10h
mov cx,si
mov al,ch
call SHOWALASCII
mov al,cl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出DI
mov al,'D'
int 10h
mov al,'I'
int 10h
mov al,'='
int 10h
mov cx,di
mov al,ch
call SHOWALASCII
mov al,cl
call SHOWALASCII
mov ah,0eh
mov al,'h'
int 10h
mov al,20h
int 10h
;输出FLAG寄存器
mov al,0dh
int 10h
mov al,0ah
int 10h ;重新换一行
mov al,'F'
int 10h
mov al,'L'
int 10h
mov al,'A'
int 10h
mov al,'G'
int 10h
mov al,':'
int 10h
call SHOWFLAG
mov al,0dh
int 10h
mov al,0ah
int 10h
popa
iret
;===================================
;==========================================================================
;SHOWAL
;
;
;
;==========================================================================
SHOWALASCII:
push ax
push ax
al_showhigh:
shr al,4
add al,30h
cmp al,39h
jbe al_showlow
add al,7
mov ah,0eh
int 10h
jmp al_low
al_showlow:
mov ah,0eh
int 10h
al_low: pop ax
and al,0fh
add al,30h
cmp al,39h
jbe al_endshow
add al,7
mov ah,0eh
int 10h
jmp al_back
al_endshow:
mov ah,0eh
int 10h
al_back: pop ax
ret
;==========================================================================
;SHOWFLAG
;
;
;
;==========================================================================
SHOWFLAG:
PUSH BX
PUSHF
POP BX
PUSHF
PUSH AX
push cx
MOV CX,16
LAST1:
MOV AL,'0'
RCL BX,1
JNC NEXT1
MOV AL,'1'
NEXT1: MOV AH,0EH
INT 10H
LOOP LAST1
MOV AL,'B'
INT 10H
POP CX
POP AX
POPF
POP BX
RET
denghongli1 2005-06-30
  • 打赏
  • 举报
回复
不知道你用的是哪个汇编程序,我也是刚刚学汇编的,我们用的是masm5,用debug查看结果,如果你也是的话,可以先用记事本,把程序写出来,然后用masm5连接汇编,然后可以用debug查看,最后调用dos的02功能,可以查看结果,在调用dos的02功能之前,要注意你是显示输出字符还是字符串,如果是字符可以加这样一条语句 mov dl,ax 其中ax是你所要输出的寄存器名,如果是字符串就要把al改成ax这样就可以了.
不知道我所说的能不能帮助你,我也是个新手!
proinfor 2005-06-06
  • 打赏
  • 举报
回复
显示用DOS的2号功能调用
mov ah,2
int 21h
showtime84 2005-06-06
  • 打赏
  • 举报
回复
举个简单的例子,

mov dl,'a' ;入口参数dl
mov ah,2 ; 调用系统的子程序号
int 21h ; biso中的系统功能调用

这是在电脑屏幕上显示的就是字符 a
xp5211314 2005-06-05
  • 打赏
  • 举报
回复
能不能写一段代码给我参考参考怎么调用的啊!
goodsea 2005-05-30
  • 打赏
  • 举报
回复
用DEBUG -t可以显示寄存器 中的内容
VxD1 2005-05-29
  • 打赏
  • 举报
回复
将存储器或寄存器中的数转换为ASCII码,然后调用dos功能调用的2号功能号显示

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧