鱼C论坛

 找回密码
 立即注册
查看: 2726|回复: 1

请教一下这段代码为什么不显示?

[复制链接]
发表于 2012-3-14 20:06:50 | 显示全部楼层 |阅读模式

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

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

x
assume cs:codesg
datasg segment
        db "Beginner's All-purpose Symbolic Instruction Code.",0
datasg ends
codesg segment
begin:
        mov ax,datasg
        mov ds,ax
        mov si,0
        call s
        mov ax,4c00h
        int 21h
s:    mov al,ds:[si]
      cmp al,0
   je s1
   cmp al,61h
   jb s2
   cmp al,71h
   ja s2
   inc si
   jmp short s
s2:   and al,11011111b
      mov ds:[si],al
   jmp  s
s1:   mov ax,0b800h
      mov es,ax
   mov di,0
   sub dh,1
   mov al,160
   mul dh
   mov bx,ax
   sub dl,2
   mov al,2
   mul dl
   mov bx,ax
   mov cl,2
   mov al,cl
   mov ch,0
s3:   mov cl,ds:[si]
      jcxz  s3
   mov es:[bx+di],cl
   mov es:[bx+di+1],al
   inc si
   add di,2
   jmp short s1
   ret
   
codesg ends
end begin
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-3-14 21:15:18 | 显示全部楼层
应该再好好看看cmp那段,尤其是利用cmp进行转移的,ASCLL码从61h到7Ah是小写字母,这段应该把不符合条件的跳转出去,符合条件的一直执行下去,然后将小写变为大写
还有显示那段,如果单纯显示文本,只要确定从什么位置开始就可以了,不需要和先前的例子用dh dl cl,如果使用的话,也需要事先赋值,所以显示那段也有问题
  1. assume cs:codesg,ds:datasg

  2. datasg segment
  3.         db "Beginner's All-purpose Symbolic Instruction Code.",0
  4. datasg ends

  5. codesg segment

  6.         begin: mov ax,datasg
  7.                mov ds,ax
  8.                mov si,0
  9.                call s
  10.                mov ax,4c00h
  11.                int 21h

  12.             s: mov al,ds:[si]
  13.                cmp al,0
  14.                je s1
  15.                cmp al,61h
  16.                jb s2
  17.                cmp al,7Ah
  18.                ja s2
  19.                and al,11011111b
  20.                mov ds:[si],al
  21.            s2: inc si
  22.                jmp short s

  23.            s1: mov ax,0b800h
  24.                mov es,ax
  25.                mov di,0
  26.                mov si,0
  27.                mov bx,12*160+3*2
  28.                mov al,02h

  29.            s3: mov cl,ds:[si]
  30.                mov ch,0
  31.                jcxz ok
  32.                mov es:[bx+di],cl
  33.                mov es:[bx+di+1],al
  34.                inc si
  35.                add di,2
  36.                loop s3

  37.            ok: ret

  38. codesg ends
  39. end begin
复制代码



小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-2 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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