鱼C论坛

 找回密码
 立即注册
查看: 3681|回复: 5

汇编实验10.1不显示

[复制链接]
发表于 2020-6-20 01:05:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
完全照抄小甲鱼视频代码,但是执行后什么都没有输出。问题出在哪里,请大大指点:
assume cs:code
data segment
        db 'Welcome to masm!',0
data ends
code segment
start:                mov dh,8
                        mov dl,3
                        mov cl,2
                        mov ax,data
                        mov ds,ax
                        mov si,0                                ;SI用于索引数据段,定位在0 'W'处
                        call show_str
                        mov ax,4c00h
                        int 21h
show_str:        push cx
                        push si
                        mov al,0a0h                                ;每行A0个字节(160)
                        dec dh                                        ;定位第8行开始,从0开始故减1
                        mul dh                                        ;计算开始行字符数,被乘数AL,160*7=1120,保存在AX中
                        mov bx,ax                                ;BX保存AX的1120
                        mov al,2                                ;定义写入每个单元为2个字符,低位ASCII码,高位属性
                        mul dl                                        ;定位开始字符位置,2*3=6,被乘数AL
                        sub ax,2                                ;开始字符从0开始故-2个字符,6-2=4,保存在AX中
                        add bx,ax                                ;定位开始字符为第7行(0行开始)第2个字(0字符开始),1120+4=1124,相加后保存在BX中
                        mov ax,0B800h                        ;定位写入的内存单元B800H,显存开始处
                        mov es,ax                                ;将显存开始处保存在ES中
                        mov di,0                                ;DI指向写入目标内存地址的索引,开始置零
                        mov al,cl                                ;把颜色属性保存在AL中
                        mov ch,0                                ;CX高位CH置零
s:                        mov cl,ds:[si]                        ;CX低位CL保存数据段SI
                        jcxz ok                                        ;如果CX为0,跳转至OK标号
                        mov es:[bx+di],cl                ;把CL中保存的数据写入目标地址 B800:0464(1124)处
                        mov es:[bx+di+1],al                ;把属性写入目标地址 B800:0465(1125)处
                        inc si                                        ;SI递增1,指向数据段下一个内存单元
                        add di,2                                ;DI递增2,指向目标地址下一个字单元
                        jmp short s                                ;跳转至S标号,继续操作下一个字符
ok:                        pop si
                        pop cx
                        ret
code ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-6-20 09:22:28 | 显示全部楼层
我测试了,可以显示啊,但是我不知道题目的意思是什么。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-20 15:54:09 | 显示全部楼层
本帖最后由 yuxinajie 于 2020-6-20 15:55 编辑
yjcoke 发表于 2020-6-20 09:22
我测试了,可以显示啊,但是我不知道题目的意思是什么。


是在屏幕第八行用绿色显示 Welcome to masm!
为啥我执行后什么都没有发生
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-6-23 16:04:24 | 显示全部楼层
小甲鱼有这代码?我咋没见过?而且太复杂看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-6-25 23:33:17 From FishC Mobile | 显示全部楼层
405794672 发表于 2020-6-23 16:04
小甲鱼有这代码?我咋没见过?而且太复杂看不懂

小甲鱼的汇编视频
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-8-17 20:38:26 | 显示全部楼层
本帖最后由 sbx 于 2020-8-17 20:41 编辑

;问题
;显示字符串是现实工作中经常要用到的功能,应该编写一个通用的子程序来实现这个功能。我们应该提供
;灵活的调用接口,使调用者可以决定显示的位置(行、列)、内容和颜色
;子程序描述
;名称:show_str
;功能:在指定的位置,用指定的颜色,显示一个用0结束的字符串。
;参数(dh)=行号(取值范围0~24),(dl)=列号(取值范围0~79),
;(cl)=颜色,ds:si指向字符串的首地址。
;返回:无
;应用举例:在屏幕的8行3列,用绿色显示data段中的字符串。

assume cs:code
data segment
db 'Welcome to masm!',0
data ends

code segment
start: mov dh,8
mov dl,3
mov cl,2
mov ax,data
mov ds,ax
mov si,0
call show_str

mov ax,4c00h
int 21h

show_str:push cx
mov ax,0b800h
mov es,ax
mov al,dh
mov ah,160
mul ah
mov bx,ax
mov al,dl
mov ah,2
mul ah
add bx,ax
mov di,0

s0:mov cl,[si]
mov ch,0
jcxz s
mov al,[si]
pop cx
mov ah,cl
mov es:[bx+di],ax

inc si
add di,2
push cx
jmp short s0

s:ret


code ends
end start
截图未命名.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 15:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表