汇编问题急啊,高手帮帮忙吧

来源:百度知道 编辑:UC知道 时间:2024/04/30 02:01:41
DATA SEGMENT

W DW -304

X DW 1000

Y DW -12

Z DW 20

RESULT DW 2 DUP(?)

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START:MOV AX,DATA

MOV DS,AX

MOV AX,X ;被乘数X取到AX中

IMUL Y ;计算X*Y

MOV CX,AX

MOV BX,DX ;X*Y转存到BX、CX

MOV AX,Z ;Z取到AX中

CWD ;Z扩展到DX、AX中

ADD CX,AX

ADC BX,DX ;计算X*Y+Z

SUB BX,220 ;计算X*Y+Z-220

SBB BX,0

MOV AX,W ;W取到AX中

CWD ;扩展到DX、AX中

SUB AX,CX

SBB DX,BX ;计算W-(X*Y+Z-220)

IDIV X ;计算(W-(X*Y+Z-220))/X

MOV RESULT,AX

MOV RESULT+2,DX ;送结果

MOV AH,4CH

INT 21H ;返回DOS

CODE ENDS

END START

这是我编的已经给了初值的程序段,可是我们老师要求是用键盘输入这四个数然后在屏幕上显示,这比上面要复杂的多,关键是键盘输入要怎么转化为计算用到的值,然后重新转化为数的ASCII码输出呢?

键盘输入四个带符号数,完成(w-(x*y+z-220))/x的计算,将表达式的商和余数存入数据区 result单元开始的区

这是我以前编的一个从键盘输入整数的程序,希望对你有点帮助
data segment
intnum dw 0
data ends

stack segment
db 50h dup(11)
stack ends

code segment
assume cs:code, ds:data, ss:stack
main proc far
start: mov ax, data
mov ds, ax
mov es, ax
mov ax, stack
mov ss, ax
mov sp, 4fh

lea si, intnum
mov cx, 6
xor bx, bx
mov [intnum], word ptr 10
.loop: mov ah, 01h
int 21h
cmp cx, 6
jnz next1
cmp al, 2dh
jnz next0
mov dx, 1
push dx
dec cx
jmp .loop
next0: xor dx, dx
push dx
next1: cmp al, 30h
jl tail
cmp al, 39h
jg tail
xchg bx, ax
xor dx, dx
cwd
imul word ptr [intnum]
xchg bx, ax
sub al, 30h
xor ah, ah
add bx, ax
jmp .loop

tail: pop ax
cmp ax, 0
jz tail1
neg bx
tail1: mov [intnum],