回 帖 发 新 帖 刷新版面

主题:急问hello word 怎样编写

大家好,我刚刚学汇编
老师让我们作一个汇编的作业,要求如下:
编写HELLO.ASM
功能:
输出“HELLO WORLD !”
A、用ASCII输出
B、用HEX(16进制)输出
必须能讲清楚每句的含义(因为老师让当场讲解自己的看法)

希望哪位高手能帮帮忙,我将不胜感激.

回复列表 (共6个回复)

沙发

A.

string   db   'HELLO WORLD!', '$'
......
         mov ah, 09h
         lea dx, string
         int 21h
.......

B.

         lea bx, string
         xor si, si
cycle:   mov dh, [bx+si]
         cmp dh, '$'
         jz short exit
         mov cx, 2
disp:    xor dl, dl
         rol dx, 1
         rol dx, 1
         rol dx, 1
         rol dx, 1
         cmp dl, 10
         jb short digit
         add dl, 7
digit:   add dl, '0'
         mov ah, 02h
         int 21h
         loop disp
         mov ah, 02h
         mov dl, ' '
         int 21h
         inc si
         jmp cycle
exit:    ......

板凳


谢谢您了.
我是新手,以后还会麻烦您的,谢谢了

3 楼

求助 有谁知道汇编在什么条件下使用  是用什么来编写的啊 知道的请回 谢谢

4 楼


这个程序是个跳动的小孩,不过现在是在左上角跳动
能不能帮我改到右下角跳动啊,谢谢了,要交做业,急啊,

十分感谢!!!!! 我的QQ是4828241谢谢了,真的很急啊,呵呵`~




;该程序没有用到时间延时,而是巧妙的用了LOOP指令使图形字符不断的覆盖,就可以达到了跑动的效果!

.model small

;-------------------------------------------------------------------------------
.data
;
;男孩的跑动图形数据
;frame 1 data
;
boyd db 8 dup(0) ;ascii 80h (upper right)
db 8 dup(0) ;ascii 81h
db 0,1,7,31,4 dup(63) ;ascii 82h
db 120,252,244,240,240,240,176,176 ;ascii 83h
db 8 dup (0) ;ascii 84h
db 0,1,3,7,14,14,12,1 ;ascii 85h
db 31,207,231,247,127,126,254,254 ;ascii 86h
db 248,184,200,240,128,0,8,120 ;ascii 87h
db 0,1,3,7,15,14,12,0 ;ascii 88h
db 7,207,207,223,255,255,239,195 ;ascii 89h
db 254,254,255,247,227,128,128,128 ;ascii 8ah
db 120,240,192,128,4 dup(0) ;ascii 8bh
db 8 dup(0) ;ascii 8ch
db 3,3,1,1,4 dup(0) ;ascii 8dh
db 131,135,207,254,252,240,96,0 ;ascii 8eh
db 8 dup(0) ;ascii 8fh
;
;
;frame 2 data
;
db 8 dup(0) ;ascii 90h
db 8 dup(0) ;ascii 91h
db 5 dup(0),3,15,31 ;ascii 92h
db 3 dup (0),124,2 dup(254),252,248 ;ascii 93h
db 8 dup(0) ;ascii 94h
db 3 dup(0),1,3,7,6,6 ;ascii 95h
db 63,63,31,159,207,231,255,127 ;ascii 96h
db 248,248,216,216,252,220,228,248 ;ascii 97h
db 8 dup(0) ;ascii 98h
db 6,15,63,127,255,255,127,127 ;ascii 99h
db 254,3 dup(252),253,223,143,128 ;ascii 9ah
db 0,0,96,224,224,192,128,0 ;ascii 9bh
db 0,1,1,5 dup(0) ;ascii 9ch
db 255,239,207,30,127,255,252,0 ;ascii 9dh
db 192,192,0,0,128,0,0,0 ;ascii 9eh
db 8 dup(0) ;ascii 9fh
;
;
;frame 3 data
;
db 8 dup(0) ;ascii a0h
db 8 dup(0) ;ascii a1h
db 0,0,3,7,4 dup(15) ;ascii a2h
db 0,126,3 dup(255),252,236,236 ;ascii a3h
db 8 dup(0) ;ascii a4h
db 7 dup(0),1 ;ascii a5h
db 15,7,1,1,7,63,255,255 ;ascii a6h
db 254,238,242,252,224,128,0,0 ;ascii a7h
db 7 dup(0),1 ;ascii a8h
db 1,3,7,15,31,63,255,252 ;ascii a9h
db 255,254,255,255,252,255,255,252 ;ascii aah
db 0,0,128,128,0,128,0,0 ;ascii abh
db 3,15,30,30,28,30,30,0 ;ascii ach
db 192,7 dup(0) ;ascii adh
db 62,14,6 dup(0) ;ascii aeh
db 8 dup(0) ;ascii afh
;
;
;frame 4 data
;
db 8 dup(0) ;ascii b0h
db 7 dup(0),13 ;ascii b1h
db 1,7,4 dup(15),7,199 ;ascii b2h
db 254,255,255,253,252,236,236,254 ;ascii b3h
db 5 dup(0),63,254,254 ;ascii b4h
db 31,30,3 dup(0),7,31,63 ;ascii b5h
db 227,121,63,63,254,3 dup(255) ;ascii b6h
db 238,242,252,0,3,135,255,252 ;ascii b7h
db 252,63,63,31,4 dup(0) ;ascii b8h
db 4 dup(255),4 dup(0) ;ascii b9h
db 240,224,192,240,248,63,31,15 ;ascii bah
db 0,0,96,224,224,192,192,128 ;ascii bbh
db 8 dup(0) ;ascii bch
db 8 dup(0) ;ascii bdh
db 6,7 dup(0) ;ascii beh
db 8 dup(0) ;ascii bfh
;
;
ascii db ?
frame db ?
;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------
.code
start: mov ax,@data
mov ds,ax 
mov es,ax
;
; 先设置使用320×200彩色图形方式
main: mov ah,0 
mov al,4 
int 10h 
;
; 然后设置在320×200图形方式下的调色板颜色和背景颜色
;
mov ah,11 
mov bh,1 
mov bl,0 
int 10h
;
mov ah,11 
mov bh,0 
mov bl,1 
int 10h
;
; 设置中断向量指向跑动男孩的图形数据
;
mov al,1fh 
mov dx,offset boyd 
mov ah,25h 
int 21h 
;
;把男孩的图形画在显示屏的左上角跑动
frame1: mov ascii,80h 
mov frame,1
;
startfr: sub dx,dx 
;
drawchar: mov ah,2 ;置光标位置
mov bh,0
int 10h
;设置男孩为黄色并在蓝色背景里,并设置了男孩的高度和宽度
mov ah,9 
mov cx,1 
mov bl,03h 
mov al,ascii
int 10h
;
inc ascii 
inc dl 
cmp dl,3 
jna drawchar
;
mov dl,0 
inc dh 
cmp dh,3 
jna drawchar
;
;重复显示男孩的图形
;
call delay ;调用跑动子程序
;
inc frame ;变换男孩显示图形
cmp frame,4
jna startfr
;
; 调用校验键盘功能如果按任意键,就重新设置成为80×25的彩色方式并返回DOS
mov ah,0bh 
int 21h 
cmp al,0ffh 
jne frame1
xor dx,dx
xor bp,bp
mov ax,03
int 10h

mov dh,0
mov dl,33
mov al,1
mov bl,0eh
mov ah,13h
int 10h
;
mov ax,4c00h
int 21h 
;

;
delay proc
push cx
mov cx,10000
waste: loop waste
pop cx
ret
delay endp
;-------------------------------------------------------------------------------

;-------------------------------------------------------------------------------
.stack 100h
;-------------------------------------------------------------------------------
end
 

5 楼

很有趣的程序,改动这几行变成显示在右下:
....
startfr: ;sub dx,dx 
    mov dh, 20
    mov dl, 32
....
inc ascii 
inc dl 
cmp dl,35
jna drawchar
;
mov dl,32
inc dh 
cmp dh,23 
jna drawchar
.....

6 楼

dseg        segment
data        db        'Hello world.''$'
dseg        ends
cseg        segment
        assume        ds: dseg, cs: cseg
start:        mov        ax, dseg
        mov        ds, ax
        lea        si, data
again:        mov        al, [si]
        cmp        al, '$'
        jz        over
        mov        ah, 0eh
        int        10h
        inc        si
        jmp        again
over:        mov        ax, 4c00h
        int        21h
cseg        ends
        end        start

我来回复

您尚未登录,请登录后再回复。点此登录或注册