高手救命!!!!(帮朋友求的汇编代码,分不够再加!!!急用!!快!!!)
1.向键盘输入一个简单的十进制表达式(不超过3个数,每个数不超过3位)。如“586+54-154=”计算表达式,并将表达式和结果显示出来。
2.向屏幕开一个窗口,左上角坐标5,15,右下角坐标22,65,从键盘输入字符就会从窗口最下行开始显示。当一行字显示满后,自动上卷一行,输入的字符仍显示最低一行,窗口最高一行上卷后自动消失,输入命令串
end程序结束。
问题点数:100、回复次数:7Top
1 楼mydo(侯佩|hopy|ks)回复于 2004-12-02 08:02:23 得分 40
1 这是两个数相加的代码,稍加改动即可符合楼主要求,请楼主自己完成吧。
data segment
op1 dw ?
op2 dw ?
str1 db 'Please Input The 1st Number',13,10,'$'
str2 db 'Please Input The 2st Number',13,10,'$'
str3 db 'The Answer Is:','$'
data ends
code segment
assume cs:code,ds:data
start:
main proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax
lea dx,str1
mov ah,9
int 21h
call dec2bin
mov op1,bx
lea dx,str2
mov ah,9
int 21h
call dec2bin
mov op2,bx
add bx,op1
lea dx,str3
mov ah,9
int 21h
call bin2dec
retf
main endp
dec2bin proc near
mov bx,0
newchar:
mov ah,1
int 21h
sub al,30h
jl exit
cmp al,9d
jg exit
cbw
xchg ax,bx
mov cx,10d
mul cx
xchg ax,bx
add bx,ax
jmp newchar
exit:
ret
dec2bin endp
bin2dec proc near
mov cx,10000d
call decdiv
mov cx,1000d
call decdiv
mov cx,100d
call decdiv
mov cx,10d
call decdiv
mov cx,1d
call decdiv
ret
bin2dec endp
decdiv proc near
mov ax,bx
mov dx,0
div cx
mov bx,dx
mov dl,al
add dl,30h
mov ah,2
int 21h
ret
decdiv endp
code ends
end startTop
2 楼xzhangyu(Beyond乐魂不死)回复于 2004-12-02 11:53:21 得分 0
谢谢楼上的,能不能把第2个题搞出来哦!小弟感激不尽哦!Top
3 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-03 23:16:27 得分 50
.MODEL SMALL
.STACK 100H
.DATA
.CODE
MAIN PROC FAR
START:
MOV AX,@DATA
MOV DS,AX
;CLEAR SCREEN
MOV AH,6
MOV AL,0
MOV BH,7
MOV CH,0
MOV CL,0
MOV DH,24
MOV DL,79
INT 10H
;LOCATE CURSOR
LOCATE:
MOV AH,2
MOV DH,21
MOV DL,14
MOV BH,0
INT 10H
;GET CHARACTERS FROM KEYBOARD
MOV CX,51
GET_CHAR:
MOV AH,1
INT 21H
CMP AL,1BH
JZ EXIT
LOOP GET_CHAR
;SCROLL UP
MOV AH,6
MOV AL,1
MOV CH,4
MOV CL,14
MOV DH,21
MOV DL,64
MOV BH,7
INT 10H
JMP LOCATE
EXIT: MOV AX,4C00H
INT 21H
MAIN ENDP
END START
不好意思啊老兄,宿舍里要关灯了,不能把那个输入END结束编写进来了,改为键入Esc退出程序,这个程序还是挺简单的,不过我的注释可能太烂了,如果真看不懂的话呢就加我QQ:286502268 咱们交流交流,加我时注明是CSDN汇编交流既可!
要不等我明天再上一次论坛看看也行!Top
4 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-03 23:18:10 得分 0
上面的程序是第二题的,16位实模式下的程序Top
5 楼jk88811(你的就是我的,我的还是我的~!)回复于 2004-12-03 23:18:34 得分 0
关机睡觉啦,明天见吧!Top
6 楼xzhangyu(Beyond乐魂不死)回复于 2004-12-05 13:22:19 得分 0
谢谢文哥了哦!我对汇编不是很懂,我帮朋友要麻烦你谢完,行不哦?
谢谢了哦!Top
7 楼Knuthocean(摘天上的星星)回复于 2004-12-05 23:36:34 得分 10
用显示缓冲区吧,你改变内存中显示缓冲区的内容和你改变屏幕的内容是一样的,显示缓冲区的地址一般地B000或B800,有的还是C000Top




