十三章实验题 求大牛指点一下,代码中还需要修改那些地方?
本帖最后由 lyoal 于 2012-12-22 15:47 编辑十三章实验题 求大牛指点一下,代码中还需要修改那些地方?
不知道是不是寄存器冲突导致的
assume cs:code
data segment
db 'Welcom to masm!',0
data endscode segment
start:
;========================安装中断例程=============================================
mov ax,cs ;定义中断例程数据源
mov ds,ax
mov si,offset sst
mov ax,0 ;定义中断例程安装的目的地址
mov es,ax
mov di,200h
mov cx,offset ssend - offset sst ;定义中断例程的长度
cld ;定义数据传送方向
rep movsb ;传送字符
mov ax,0
mov es,ax ;设置中断向量
mov word ptr es:,200h
mov word ptr es:,0
mov ax,4c00h
int 21h
;===========================主程序=========================================
mov dh,10 ;行
mov dl,10 ;列
mov cl,2 ;颜色
mov ax,data
mov ds,ax ;将字符串数据段关联到DS
mov si,0 ;设置SI为字符串首地址
int 7ch
mov ax,4c00h
int 21h;======================被安装的中断例程=========================================
sst: mov ax,0b800h;关联显示缓冲区
mov es,ax
mov di,9*160+10*2 ;设置字符串在显示缓冲区的首地址
s:cmp byte ptr ,0
je short ok
mov ch,byte ptr
mov byte ptr es:, ch
mov byte ptr es:,cl
inc si
add di,2
jmp short s
ok:iret
ssend: nop
code ends
end start
兄弟,你进步神速啊,自己解决了,你分给谁啊,可是给不了自己的哦,上次在我求助帖里我可是帮你解决一些问题了哦,这里的分是不是应该给我啊:( 本帖最后由 lyoal 于 2012-12-22 15:46 编辑
assume cs:code
data segment
db 'Welcom to masm!',0
data endscode segment
start:
;========================安装中断例程=============================================
mov ax,cs ;定义中断例程数据源
mov ds,ax
mov si,offset sst
mov ax,0 ;定义中断例程安装的目的地址
mov es,ax
mov di,200h
mov cx,offset ssend - offset sst ;定义中断例程的长度
cld ;定义数据传送方向
rep movsb ;传送字符
mov ax,0
mov es,ax ;设置中断向量
mov word ptr es:,200h
mov word ptr es:,0
;mov ax,4c00h
;int 21h
;===========================主程序=========================================
mov dh,10 ;行
mov dl,10 ;列
mov cl,2 ;颜色
mov ax,data
mov ds,ax ;将字符串数据段关联到DS
mov si,0 ;设置SI为字符串首地址
int 7ch
mov ax,4c00h
int 21h;======================被安装的中断例程===============================================
sst: mov ax,0b800h;关联显示缓冲区
mov es,ax
mov di,9*160+10*2 ;设置字符串在显示缓冲区的首地址
s:cmp byte ptr ,0
je short ok
mov ch,byte ptr
mov byte ptr es:, ch
mov byte ptr es:,cl
inc si
add di,2
jmp short s
ok:iret
ssend: nop
code ends
end start 自己解决了,谢谢自己一下,哈哈。。。。。 lyoal 发表于 2012-12-22 15:45 static/image/common/back.gif
自己解决了,谢谢自己一下,哈哈。。。。。
{:5_109:}这么快自食其力啦~ 小甲鱼 发表于 2012-12-22 18:10 static/image/common/back.gif
这么快自食其力啦~
:lol回头调示了一下,一不小心成了。谋事在人,成事在天啊 本帖最后由 lyoal 于 2012-12-22 20:39 编辑
wawa 发表于 2012-12-22 15:12 static/image/common/back.gif
兄弟,你进步神速啊,自己解决了,你分给谁啊,可是给不了自己的哦,上次在我求助帖里我可是帮你解决一些问 ...
Assume cs:code
data segment
db '9,8,7,4,2,0',0
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,160*12+36*2
mov bl,2
mov cx,6
sub ax,ax
s: push cx
mov al,
add al,30h
out 70h,al ;对CMOS RAM端口进行读写操作
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h ;将数字转换成字符
add al,30h
mov byte ptr es:,ah
mov byte ptr es:,bl
mov byte ptr es:,al
mov byte ptr es:,bl
inc si
add di,4
pop cx
loop s
ok: mov ax,4c00h
int 21h
code ends
end start给你,不能白给,帮忙指点一下这个问题,呵呵。。。。
这段代码,我想实现,循环读取CMOS RAM中的年月日时分秒。整了两小时了,没搞出来,帮忙指点一下撒。
鱼C老师能光顾咱的贴子,三生有幸啊,呵呵。。。。。您老如有时间望也能不吝指点一下迷津。
感谢各位大牛!THKS V M!
{:1_1:}20~23行代码有误,数据段定义有误,你想把cmos地址放在数据段中应该表示为db 9,8,7,4,2,0,干嘛要用字符串,数值加30h变字符 你的第21行代码,应该是减30h吧,你想把字符变数值吧,你字符串里还有逗号,20行 在第二次循环里,你把逗号传给al 然后out 70h,al 肯定出错啊,正确答案我想你有吧 我就不发了 wawa 发表于 2012-12-22 21:38 static/image/common/back.gif
20~23行代码有误,数据段定义有误,你想把cmos地址放在数据段中应该表示为db 9,8,7,4,2,0,干嘛要用 ...
Assume cs:code
data segment
db '987420'
data ends
code segment
start:
mov ax,data
mov ds,ax
mov si,0
mov ax,0b800h
mov es,ax
mov di,160*12+36*2
mov bl,2
mov cx,6
sub ax,ax
s: push cx
mov al,
sub al,30h
out 70h,al ;对CMOS RAM端口进行读写操作
in al,71h
mov ah,al
mov cl,4
shr ah,cl
and al,00001111b
add ah,30h ;将数字转换成字符
add al,30h
mov byte ptr es:,ah
mov byte ptr es:,bl
mov byte ptr es:,al
mov byte ptr es:,bl
inc si
add di,4
pop cx
loop s
ok: mov ax,4c00h
int 21h
code ends
end start
非常感谢兄弟的指点,确实是要减30h,我之前减过一次,没成功,可能就出在数据段定义中的豆号的原因。GODD,THKS.
贴出来跟大家分享一下下。呵呵
大牛勿喷
来看看呵呵
页:
[1]