写一个汇编语言程序,完成100以内十进制数相加运算。

来源:百度知道 编辑:UC知道 时间:2024/06/11 05:01:38
要求:1首先清除屏幕并将光标定位在屏幕的中间位置;
2然后提示用户输入两个两位十进制整数,将它们相加并显示其和;
3使用循环令其重复执行三次,每次重复之后清除屏幕。
这是俺老师给留的一作业题,俺实在搞不定了,请问哪位大侠能帮忙搞定一下,最好附带说明,叩谢!

1.现有(DS)=2000H,(BX)=0100H,(SI)=0002H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H,是说明下面各条指令执行完之后AX寄存器中的内容
MOV AX,1200H ;AX=1200H
MOV AX,BX ;AX=100H
MOV AX,[1200H] ;AX=4C2AH
MOV AX,[BX] ;AX=3412H
MOV AX,[BX+1100] ;AX=4C2AH
MOV AX,[BX+SI] ;AX=7856H
MOV AX,[BX+SI+1100] ;AX=65B7H

2.判断一下指令书写是否正确,如有错误指出错在何处并且改正
MOV AL,BX ;错误。操作数类型不匹配,AL是8位寄存器,BX是16位寄存器。可改为:MOV AL,BL或MOV AX,BX等
MOV AL,SL ;若SL是变量或常量,正确;否则,错误。可改为:MOV AL,BL或MOV AL,DL等
INC [BX] ;错误。未指定操作数类型,可改为:INC BYTE PTR [BX]或INC WORD PTR [BX]等
MOV 5,AL ;错误。不允许立即数作为目的操作数,可改为:MOV BL,AL或MOV AH,AL等
MOV [BX],[SI] ;错误。不允许两个操作数同为存储单元,可改为:MOV [BX],AX或MOV AX,[SI]等
MOV BL,0F5H ;正确
POP CS ;错误。代码段寄存器CS不能作为目的操作数,可改为:POP DS或POP ES等
MOV DX,2000H ;正确
MOV ES,3278H ;错误。立即数不能直接传送给段寄存器,可改为:
MOV AX,3278H
MOV ES,AX

PUSH AL ;错误。进栈指令的操作数必须是16位(或16的整数倍)寄存器或是存储单元,可改为:PUSH AX或PUSH [SI]等