DATA SEGMENT
TABLE1 DB 0FFH,0FFH,0FFH,0FFH,0FFH
DB 0FFH,0FFH,0FFH,0FFH,0FFH ;这个你自己改吧。
SUM DW
ASCC DB 10 DUP (20h) ,'$'
COUNT DW 10
DATA ENDS
;
CODE SEGMENT
ASSUME CS:CODE ,DS:DATA,ES:DATA
START: MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,TABLE1
MOV CX,10
XOR AX,AX
XOR BX,BX
CBW
NEXT: MOV AL,[SI]
CBW
ADD BX,AX
INC SI
LOOP NEXT
MOV SUM,BX
;以下是显示部分
LEA SI,sum
MOV BX,10 ;除数
LEA DI,ASCC+9 ;放入要转换的数
MOV AX,[SI]
AGAIN: XOR DX,DX
AND Ax,AX
JNS NEXT4
NEG AX
NEXT4: DIV BX
ADD DL,30H
MOV [DI],DL
XOR DX,DX
DEC DI
INC COUNT
AND AX,AX
JZ NEXT5
JMP NEXT4
NEXT5:
MOV AX,[SI]
CMP AX,8000H
JNC NEXT6
MOV AL,2BH
MOV [DI],AL
JMP NEXT7
NEXT6: MOV AL,'-'
MOV [DI],AL
NEXT7: LEA DX,ASCC
MOV AH,09H
INT 21H
MOV AH,4CH
INT 21H
CODE ENDS
END START
没有什么难点,主要是比较费工夫。汇编语言可读性非常差,一般情况别人只可能指导思路,不可能代替,别人写出来的东西你自己看也费劲,而且什么都学不到。
我提点一下你吧,第一题如果让我做,我会先写一系列的子函数或者宏,然后依次调用完成整个工作:1、int 21h的键盘输入
2、int 21h的屏显
3、判断是否为大写字母(asc2码是否在41h到5ah的范围)
4、判断是否为小写字母(asc2码是否在61h到7ah的范围)
5、判断是否为回车
6、转换字母的asc2码为数字
主函数:开辟一个262的一系列存储单元,假如首地址为XXH,初值都为0。
调用1 存在某个地址[A]内。
依次调用3 4 5,若
3成立,调用6把大写字母的asc2码提取为B,执行XXH+B-41h内存储的数+1。
4成立,调用6把大写字母的asc2码提取为B,执行XXH+B-61h+26内存储的数+1。
5成立,开始输出:计数器i从0到26,每次循环执行调用2输出'41h+i'(大写字母A到Z)和调用2输出XXH+i内的内容。循环结束再自0起循环26次,每次循环执行调用2输出'61h+i'和XXH+26+i内的内容。
程序框图可以根据我的叙述你自己画出来,然后程序可以查指令表慢慢编写。如果能接受这种回答方式的话请追问我们做进一步交流,细节上也可以讨论,不能接受的话就算了。
以前做的实验 可以参考下有一个10个字节的有符号数组,编程实验使该数组的元素按照从小到大的次序排列。data segment ;定义数据段data1 db 32h,02h,01h,04h,0f1h,0f2h,0ffh,0fdh,0fah,79hcount equ $-data1data ends code segment assume:ds:data,cs:codestart: mov ax,data mov ds,ax mov si,offset data1 ;指向序列首地址 mov bx,si ;把序列首地址给bx mov dx,count-1 ;外循环计数器outside:mov cx,dx ;内循环计数器 push si ;此循环处理的第一个单元地址 mov al,[si]inside: inc si cmp al,[si] jl nexchg ;若低于,则处理下一个 xchg [si],al ;若高于,则交换比较的两个单元nexchg: loop inside ;完成内部循环,继续 pop si mov [si],al inc si dec dx jnz outside ;未完成外部循环,继续code endsend start微机原理 数据排序实验
MOV CX,2 ;循环两次
LOP:SHL AX,1 ;第一次:AX左移一位,AX=1111111111111110B,CF=1
;第二次:AX左移一位,AX=1111111111111100B,CF=1
RCL DX,1 ;第一次:DX带进位循环左移一位,DX=0000000000000011B
;第二次:DX带进位循环左移一位,DX=0000000000000111B
LOOP LOP
所以,上述程序段执行后,DX=0007H, AX=0FFFCH
以上就是关于微机原理编写完整汇编程序,将内存中10个有符号数求和,结果放入SUM单元(类型DW)。有符号数类型DB.全部的内容,包括:微机原理编写完整汇编程序,将内存中10个有符号数求和,结果放入SUM单元(类型DW)。有符号数类型DB.、微机原理实验双色点阵显示“开”字程序代码、微机原理 数据排序实验等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)