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

要求: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]等
温馨提示:内容为网友见解,仅供参考
第1个回答  2009-10-28
http://zhidao.baidu.com/question/123262553.html
这个是我刚写的一个~只有正数没有负数的~你看看能不能用~

写一个汇编语言程序,完成100以内十进制数相加运算。
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...

用汇编语言将两个两位十进制数相加
30H MOV RE,AL LEA DX,RE MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START

用汇编语言编写:从键盘输入一个十进制数(100以内),将其转变为十六进制数...
START:MOV AX,DATAS MOV DS,AX I0:MOV AH, 1 INT 21H CMP AL,0DH JZ L1 CMP AL,'0'JB I0 CMP AL,'9'> JA I0 SUB AL,30H MOV X,AL I1:MOV AH,1 INT 21H CMP AL,0DH JZ L1 BR \/> CMP AL,'0'JB I1 CMP AL,'9'JA I1 SUB AL,30H MOV BH,AL >...

用汇编语言编写:从键盘输入一个十进制数(100以内),将其转变为二进制数...
jc out1 dec dl out1:int 21h loop jp1 mov ah,1 ;按任意键退出 int 21h mov ax, 4c00h int 21h MAIN ENDP CSEG ENDS END MAIN 0~99都有效 欢迎追问 求满意

用ARM汇编语言设计程序实现求和1+2+3+4+……+100 能教我吗
PART1: MOV AH ,01H ;键盘输入0~100任意数 INT 21H CMP AL,0DH JZ PART2 SUB AL,'0'PUSH AX MOV AX,RE SHL AX,1 PUSH AX MOV CL,2 SHL AX,CL POP BX ADD AX,BX POP BX MOV BH,0 ADD AX,BX MOV RE,AX JMP PAR...

在dos系统下用汇编语言编写的1+2+...+100的求和运算并能显示出结果
数:MOV SI,偏移X1 [4]???MOV DI,偏移Y1 [5]???XOR DX,DX;清晰的二进制 ???到mov cx,5,改变这个值可以达到大笔 T3:呼叫subs_c,按位累加 ???十二月SI ???十二月二 循环T3???CMP DL,1,修正最高位 ???JNZ T4 ???或DL,30H ???MOV [DI],DL;...

谁能教我用汇编语言编一个从1加到100的程序,,并用十进制在屏幕输出
abc dw data ends code segment assume cs:code,ds:data main proc far mov ax,data mov ds,ax mov ax,1 ;给ax赋初值 mov cx,99 ;总共循环99次 lop: inc ax ;ax增加1 add abc,ax ;相加,最终的结果就在变量abc里 loop lop ;循环 mov ah,4ch int 21h main endp...

高分求一汇编小程序,
CMP AX,1C0DH ;看右enter键是否被按下 JNE lp ;若没有按下,则跳回lp ;mov ax, prog_len ;---结束并驻留内存--- mov ax,3100h mov dx,((prog_len + 15)\/16) ;驻留区,16的整数倍 int 21h mov ax,4c00h int 21h main endp ;--- showtime proc far push ds push ax...

急求汇编语言问题!!!
;从键盘输入9个十进制数(数与数之间用空格隔开);再输入的一个序号(1-9),输出对应的数。输入0结束。;以上要求均已满足。;程序如下:;--- DISP_STR MACRO X ;宏定义.MOV DX, OFFSET X MOV AH, 9 INT 21H ENDM ;--- DATA SEGMENT ;数据段.MSG1 DB 13, 10, 'Pleas...

用汇编语言编写一个小小程序
这个还不简单#include<stdio.h>void main(){ float a,b,c,s;\/*定义数据类型,数据初始化*\/s=(a*b+c)\/a;\/*计算并把计算结果赋值给s*\/printf("s=%f\\n",s);\/*输出计算结果*\/}

相似回答