stack segment stack'stack'
dw 32 dup(0)
stack ends
data segment
W db 5 DUP(0)
X db 10
Y db 5
Z db 6
data ends
assume ss:stack,cs:code,ds:data
code segment
start: mov ax,data
mov ds,ax
mov cl,2
mov al,X
sar al,1
mov bl,Y
sub al,bl
mov bl,Z
sal bl,cl
add al,bl
mov ah,W
mov ah,al
mov ah,4ch
int 21h
code ends
end start
我写的这个有问题么?这段代码还要写什么才能在屏幕上输出计算结果
可以通过DOS中断来输出:
1.输出字符
mov dl,'a';将输出字符存入DL寄存器
mov ah,02h
int 21h
2.输出单个数字0-9
mov dl,0
add dl,30h;变为ASCII
mov ah,02h
int 21h
3.输出一字符串
如在数据段中
str db 'input a number:$'
输出
mov dx,offset str
mov ah,09h
int 21h
4.输出多位数(包括以十进制,十六进制,八进制,二进制输出)
这时要多次调用以上的输出格式
如输出多位十进制数的子程序
bini proc near
mov cx,10000d
call bin
mov cx,1000d
call bin
mov cx,100d
call bin
mov cx,10d
call bin
mov cx,1d
call bin
ret
bini endp
bin proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,02h
int 21h
ret
bin endp