未分类题

请编制程序,其功能是:内存中连续存放着10个十六位二进制数。分别对每个数的高位字节和低位字节进行逻辑与运算及逻辑或运算。运算结果以字的形式按序连续存放(低位字节存入逻辑与运算的结果,高位字节存入逻辑或运算的结果)。
例如:
内存中有:AA55H,55AAH,FFAAH
结果为: PP00H,FF00H,FFAAH
部分程序已给出,其中原始数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中。运算结果要求从 RESULT开始存放, 由过程SAVE保存到文件OUTPUT1.DAT中。
请填空BEGIN和END之间已经给出的源程序使其完整,空白处已经用横线标出,每个空白一般只需一条指令,但采用功能相当的多条指令亦可,或删去BEGIN和END之间原有的代码并自行编程来完成所要求的功能。
对程序必须进行汇编,并与IO.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
[试题程序]
EXTRN LOAD:FAR,SAVE:FAR
N EQU 3
STAC SEGMENT STACK
DB 128 DUP (?)
STAC ENDS
DATA SEGMENT
SOURCE DW N DUP(?)
RESULT DW N DUP(0)
NAME0 DB 'INPUT1.DAT',0
NAME1 DB 'OUTPUT1.DAT',0
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:STAC
START PROC FAR
PUSH DS
XOR AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
LEA DX,SOURCE ;数据区起始地址
LEA SI,NANE0 ;原始数据文件名
MOV CX,N*2 ;字节数
CALL LOAD ;从'INPUT1.DAT'中读取数据
; ********* BEGIN **********
MOV DI,OFFSET RESULT
MOV CX,N
MOV BX,00
PRO: MOV AX, (1)
MOV DX,AX
AND (2) ,DH
(3) AH,AL
MOV (4) ,DL
ADD BX,2
(5)
ADD DI,2
(6)
JNZ PRO
; ******** END ********
LEA DX,RESULT ;结果数据区首址
LEA SI,NAME1 ;结果文件名
NOV CX,N*2 ;结果字节数
CALL SAVE ;保存结果到文件
RET
START ENDP
CODE ENDS
END START

A.DAT中读入SOURCE开始的内存单元中。运算结果要求从
B.DAT中。
C.OBJ链接产生可执行文件,最终运行程序产生结果。调试中若发现整个程序中存在错误之处,请加以修改。
D.DAT',0
E.DAT',0
F.DAT'中读取数据

【参考答案】

(1)SOURCE[BX] (2)DL (3)OR(4)AL (5)MOV [DI]AX (6)DECCX
(1......

(↓↓↓ 点击下方‘点击查看答案’看完整答案 ↓↓↓)
热门 试题

未分类题
阅读以下说明和JAVA 2代码,填入(n)处。[说明]以下JAVA程序设计了类CSet,使用同一个名称(set)的method来传入数据。仔细阅读[代码6-1)、[代码6-2]和[代码6-3]和相关注释,将程序补充完整。[代码6-1]import javA.io.*;class CSet{private int width;private int height;(1)public void set(String color){col=color; (a)可输入长方形的颜色}public void set (iht w, int h){width=w; (b)可输入长方形的宽和高height=h;}public void set (String color, int w, int h){col=color; (c)可输入长方形的颜色、宽和高width=w;height=h;}public void show ( ){System.out.println ('n 长方形的颜色为: '+col);System.out.println ('n 长方形宽为: '+width+' 长方形高为: '+height');}}[代码6-2]public class hw8_3{public static void main (String args[]) throws IOException{intw, h; 声明宽、长变量,并给予赋值String color, k;CSet rect1;rect1=new CSet ( );System.out.print (' n请输入颜色:: ');color=input ( );System.out.print ('请输入宽度:: ');k=input ( );w=Integer.parseInt (k);System.out.print ('请输入高度:: ');k=input( );h=Integer.parseInt (k);(2) 设置长方形的颜色(3) 设置长方形的宽、高rectl.show ( );(4) 设置长方形的颜色和宽、高rectl.show ( );}[代码6-3]public static String input( ) throws IOException 输入函数{String str;BufferedReader buf;(5)str=buF.readLine ( )return str;}}
A.io.*;
B.out.println
C.out.println
D.out.print
E.out.print
F.parseInt
G.out.print
H.parseInt
I.show
J.show
K.readLine
未分类题
阅读下列程序说明和C代码,将应填人(n)处的字句写在对应栏内。[程序5说明]下列文法可用来描述化学分子式的书写规则(例如,A12(CO3)3”Cu(OH)2):λ→β βλβ→δ δnδ→ξ ξθ (λ)其中:λ是—个分子式;δ或是一个元素,或是一个带括号的(子)分子式,元素或是一个大写字母(记为ξ),或是一个大写字母和一个小写字母(记为ξθ)β或是一个δ,或是在δ之后接上一个整数n,δn表示β有n个δ的元素或(子)分子式。—个完整的分子式由若干个β组成。当然一个正确的分子式除符合上述文法规则外,还应满足分子式本身的语义要求。下面的程序输入分子式,按上述文法分析分子式,并计算出该分子式的分子量。例如:元素H的原子量是1,元素O的原子量是16。输入分子式H2O,程序计算出它的分子量为18 (1×2+16)。程序中各元素的名及它的原子量从文件atom.dat中读入。[程序5]include < stdio. h >include < string. h >define MAXN 300define GMLEN 30struct elem { char name[ ]; * 元素名* double v; *原子量* } nTbl [MAXN];char cmStr [GMLEN], * pos;int c;FILE * fp;double factor( );double atom( ) * 处理文法符号δ* {char w [3];int i; double num;while((c = * pos++) =='||c ==' t'); *略过空白字符* if(c == ' n') return 0.0;if(c>='A' && C <='Z') { *将元素名存入W * w[i =0]=c;c= * pos ++if(c >='a'&& c <='z')w[ ++i] =c;else pos--;w[ ++i] =' 0',for(i =0;nTbl [i]. v >0.0;i ++)if(strcmp (w,nTbl[i]. name) ==0) return nTbl [i]. v;printf (' n元素表中没有所输入的无素: t%s n',w); retur n - 1.0;} elseif (c = ='(') {if((num=(1)) <0.0)return -l.0; *包括可能为空的情况* if( * pos ++ ! = ')') { printf (' 分子式中括号不匹配! n') ;return - 1.0; }return num;}printf ('分子式中存在非法字符: t%c n' ,c);return - 1.0;}double mAtom( ) * 处理文法符号β* { double num ;int n = ];if((num=(2)) <0.0)return-l.0;c= *pos++;if(c >='O'&&c <='9') {n = 0; while(c > = 0&&c < ='9'){n=(3);c= *poss ++;}}pos --;return num * n;}double factor( ) *处理文法符号λ* { double num =0.0,d;if(( hum = mAtom ( )) < 0.0) return - 1.0;while( * pos >= 'A'&& * pos <= 'Z'||* pos == '(') {if((d=(4)) <0.0)return-1.0;(5);} return num;void main( ){ char fname[ ] ='atom. dst'; *元素名及其原子量文件* int i;double num;if((fp=fopon(fname,'r' )) == NULL) { *以读方式打开正文文件* prinff('Can net open%s filE. n' ,fname) ;return *程序非正常结束 * i=0;while(i < MAXN&&fscanf (fp,' %s%lf,bTbl[i]. name,&nTbl[i]. v) ==2)i++;fclose(fp) ;nTbl[i]. v =-1.0;while(1) [ *输入分子式和计算分子量循环,直至输入空行结束* printf(' n 输入分子式! (空行结束) n' ) ;gets(cmStr);pos = cmStr;if(cmStr[0] == ' 0') break;if( (num = later( ) ) > 0.0)if( * pos! = ' 0')printf('分子式不完整! n' );else printf('分子式的分子量为%f n',num);}
A.dat中读入。
B.0;
C.0;i
D.0;
E.0)return
F.0;
G.0;
H.0;
I.0)return-l.0;
J.0,d;
K.0)
L.0;
M.0)return-1.0;
N.0;
while(1)
O.0)