汇编语言 第十章 实验
编写子程序
代码:
show_str:
dec dh
mov al,0ah
mul dh
add ax,0B800h
mov es,ax
mov dh,0
dec dx
mov bx,dx
mov dl,cl
s:mov cx,0
mov cl,ds:[si]
jcxz ok
mov es:[bx],cl
inc bx
mov es:[bx],dl
inc bx
inc si
jmp short s
ok:ret
个人代码:
divdw:mov bx,ax
mov ax,dx
mov dx,0
div cx
push ax
mov ax,bx
div cx
mov cx,dx
pop dx
ret
注:这里我用了栈,需要提前定义好栈段,如果不定义,用寄存器存放低位数据也可以。
这个实验应该是目前为止最难的一个了,不认真思考很容易出问题,整整一个下午只能算是搞完一个偷懒版本的答案
代码:
assume cs:code
data segment
db 10 dup (0)
data ends
stack segment
db 0,0,0,0,0,0,0,0,0,0,0
stack ends
code segment
start :mov bx,stack
mov ss,bx
mov sp,22
mov bx,data
mov ds,bx
mov ax,12666
mov si,0
call dtoc
mov dh,8
mov dl,3
mov cl,2
call show_str
ww:mov cx,4
loop ww
mov ax,4c00h
int 21h
dtoc: mov dx,0
mov bx,0ah
div bx
mov cx,ax
add dx,30h
push dx
inc si
jcxz s1
jmp short dtoc
s1:mov cx,si
mov di,si
mov si,0
s2:pop bx
mov ds:[si],bl
inc si
loop s2
mov si,0
ret
show_str:
dec dh
mov al,0ah
mul dh
add ax,0b800h
mov es,ax
mov dh,0
dec dx
mov bx,dx
mov ch,0
push cx
mov cx,di
pop dx
s3:mov al,ds:[si]
mov es:[bx],al
inc si
inc bx
mov es:[bx],dl
inc bx
loop s3
ret
code ends
end start
效果:
课程设计1比上面的三个实验更复杂,而且难度不小,这个和个人的方向也有些差别,就不做了。