kiven 发表于 2011-12-5 15:35:35

实验十中第一个(显示字符串)程序,忘大家帮改进

本帖最后由 kiven 于 2011-12-5 15:37 编辑

;----------------------实验十(1)-显示字符串------------自写-----------------------
assume cs:code,ds:data,ss:stack

data segment
      db 'happy new year ! we must be happy! ',0
data ends

stack segment
      db 16 dup (0)
stack ends

code segment
main:                            ;显存在址的范围是B8000-BFFFF
      mov dh,8                ;dh=行号(取值范围是0-24)
      mov dl,3                ;dl=列号(取值范围是0-79)
      mov cl,5            ;cl=颜色,ds:si指向字符串的首地址
      mov ax,data            
      mov ds,ax
      mov ax,stack
      mov ss,ax
      mov sp,10h
      mov si,0
      mov di,0
      mov bx,0
      mov ax,0b800h          ;把显存的段地址放入ES中
      mov es,ax
      call show_str            ;调用显示字符的函数

      mov ax,4c00h
      int 21h
show_str:
      mov al,0a0h
      mul dh
      push ax                ;行的偏移地址
      mov al,2               ;-------这个地方,本来是想用栈来解决的,可是这用栈了,那么以后的CX怎么弄求帮助
      mul dl
      push ax                  ;列的偏移地址
      pop ax                   ;取出列的地址放入BX中
      add bx,ax
      pop ax
      add bx,ax                ;取出行的地址加入BX中
move:   
      mov al,ds:          ;把字符放入al中
      mov ah,5                ;把字符属性放入ah中
      mov es:,ax            ;把字符各字符属性放入显存中指字的位置
      mov ch,0
      mov cl,ds:          ;用CX为了判断字符是不是到头
      inc si                  ;指向下一个字符
      add bx,2                ;指向显存中的下一个地址
      jcxz ok                    ;如果cx为0   跳到指定的标号处
      jmp move            ;循环存放
ok:   ret                      ;程序返回
      
      
code ends
end main

关键是感觉 发表于 2011-12-5 16:33:26

先来点冰水!
靠人 人会跑
靠山 山会到
。。 。。。
解:一:大家肯定不会给你改的!
    二:没答到题目要求,建议在论坛搜搜,找到后在看看大体程序思路,然后在自己建立*.ASM编写。
有些问题说不清楚,自己实验后就清楚了,

kiven 发表于 2011-12-5 17:00:41

额 ,没达到么?我的运行是对的啊~~:'(:'(:'(
页: [1]
查看完整版本: 实验十中第一个(显示字符串)程序,忘大家帮改进