社区
汇编语言
帖子详情
如何将存储器或寄存器中的内容在屏幕上显示出来?
阿木的汤
2005-05-29 02:38:33
如何将存储器或寄存器中的内容在屏幕上显示出来?
...全文
879
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号功能号显示
[从零学习汇编语言] -
寄存器
详解
文章目录前言一、
存储器
与通用
寄存器
1.
存储器
2. 通用
寄存器
前言 上一章我们曾简单的介绍过计算机
中
的一些硬件和软件的相关概念,还不熟悉的小伙伴可以点击下面的链接进行预习: [汇编语言] - 汇编语言基础知识梳理 一、
存储器
与通用
寄存器
1.
存储器
每一天清晨,当我们在梦
中
醒来的时候,记忆就会填充大脑的空白,我们会想起最近做过的一些重要的事情,当然也有些小的事情无法准确的记忆起,但这并不影响我们能够重新组织新一天的生活,保持生活的连续性。当然由于我们不能过于信赖我们的记忆,所以我们发明了书写,前
二、
存储器
和
寄存器
简介
1. 扩展插槽和接口卡: a. 扩展插槽位于主板上; b. 扩展插槽一般插有RAM内存条和接口卡; c. CPU不能直接控制外设,而接口卡可以直接控制外设,因此CPU和接口卡插槽用总线相连,从而实现CPU通过控制接口卡的方式间接控制外设; 2. 各类
存储器
芯片: a. 注意:不要狭隘地认为
存储器
就是磁盘,而其实存储
汇编语言——实现用多种寻址方式在
屏幕
上
显示
“hello world !“
【代码】汇编语言——实现用多种寻址方式在
屏幕
上
显示
"hello world!
在
屏幕
上
显示
95个可打印字符
在命令行指示符状态下输入:A2000
屏幕
将
显示
: 2000: 从内存的2000单元开始建立用户的程序 按照下面格式输入: 2000: MVRD R1,7E ;向
寄存器
传送直接数 2002 : MVRD RO, 20 2004: OUT 80 ;通过串行接口输出R0低位字节
内容
到
显示
器
屏幕
2005: PUSH RO ;保存RO
寄存器
的
内容
到堆栈
中
2006: IN 81 ;读串行接...
“Hello world”是如何出现在
屏幕
上的?
当你在编译器里写出程序的时候,它是如何在计算机上运行的?接下来我们以最简单的C语言的"Hello world"代码来告诉你,程序是如何运行。 1.编写完程序后,一个sum.c文件就保存在了桌面上,这个叫做C源文件。那桌面又属于计算机的哪一个部分呢? 一台计算机包含如下基本3个部分: 在计算机
中
,
存储器
用来保存信息。
存储器
又分为内部
存储器
和外部
存储器
,内部
存储器
即我们所说的内存,而外部
存储器
就是我们说的磁盘,磁盘又分为硬盘和软盘,而我们电脑
中
的大部分就都是硬盘了,这里
汇编语言
21,498
社区成员
41,617
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章