问题 单项选择题

资料二:某企业为一般纳税人,2011年1月发生以下几笔购销业务:(1)购入原材料,取得的增值税专用发票上注明的价款为40万元。(2)销售企业生产的应税甲产品,开具普通发票,取得的含税销售额为11.7万元。(3)销售企业生产的应税乙产品,取得不含税销售额为50万元。(4)企业为职工幼儿园购进一批儿童桌、椅、木床,取得的增值税专用发票上注明的价款为1.8万元。(5)向农业生产者购进作为生产原料的免税农产品,买价为3万元。(6)出租房屋取得租金10万元。[要求] 根据上述资料,回答下列小题。

该企业当期销项税额为______万元。

A.10.49

B.10.2

C.8.5

D.9.15

答案

参考答案:B

解析: 当期销项税额=11.7÷(1+17%)×17%+50×17%=1.7+8.5=10.2(万元)。

问答题

根据16位逻辑变量L的内容对内存单元中连续存放的十六个字符的数组SOURCE作如下处理:
  (1)若L的第i位为1,将SOURCE[i]的最高位置加偶校验位
  (2)若L的第i位为0,SOURCE[i]不变
  例如:L=0005 转换之前:67H,61H,4EH,38H……
  转换之后:E7H,61H,4EH,38H……
  部分程序已经在PROG1.ASM中给出,请填空BEGIN到END之间已经给出的源程序,使其完整(空白已经用横线标出,每行空白一般只需要一条指令,但功能相当的多条指令亦可)或删除BEGIN与END之间的原有代码并自行编写程序片段完成所需的功能。
  原有数据由过程LOAD从文件INPUT1.DAT中读入SOURCE开始的内存单元中,结果要求从RESULT开始存放,由SAVE保存到OUTPUT1.DAT文件。
  对程序必须进行汇编,并与IO.OBJ连接产生PROG1.EXE执行文件,最终产生运行结果(无结果或结果不正确均不得分)。
  部分源程序如下:
EXTRN LOAD:FAR,SAVE:FAR
NEQU 16
STAC SEGMENT STACK
DB128 DUP ()
STAC ENDS

DATA SEGMENT
LDW
SOURCE DBN DUP()
RESULT DBN 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
XORAX, AX
PUSH AX
MOVAX,DATA
MOVDS, AX

LEADX,L ; 数据区起始地址
LEASI, NAME0; 原始数据文件名
MOVCX,2 + N; 字节数
CALL LOAD ; 从"INPUT1.DAT"中读取数据

**** BEGIN ****

LEASI, SOURCE
LEADI, RESULT
MOVCX,N

MOVDX, (1)
LO: MOVAL, [SI]
(2) L,DX
JZSTORE
ANDAL,AL
(3) STORE
(4)
STORE: MOV [DI],AL
INCSI
INCDI
(5)
LOOP LO

***** END *****
LEA DX,RESULT; 结果数据区首地址
LEA SI, NAME1; 结果文件名
MOV CX,N ; 结果字节数
CALL SAVE ; 保存结果到文件
RET

START ENDP
CODE ENDS
END START
相关知识:
●测试指令
指令格式:TEST R,R或TEST R,M或TEST M,R或TEST R,I或TEST M,R(其中R为寄存器,M为内存变量,I为立即数)。
测试指令将两个操作数进行逻辑乘操作,但并不把结果写回目的操作数,我们若需要知道某个寄存器中第i位是否为1,可以与一个立即数(这个立即数的第i位为1,其他位为0)进行TEST运算,结果为0,则被测试位为0,否则被测试位为1。
●测试寄存器中1的个数的奇偶性。
可以将这个寄存器进行不改变其内容的逻辑乘运算,然后查看一下奇偶标志位即可。
●对寄存器的内容进行位操作
利用“AND”、“OR”运算可对寄存器或某个内存单元中相应的清0或置1。
编程思路:
第一步:分析本程序要求完成的功能。
本程序要求完成以下功能:
(1)从数据文件INPUT1.DAT中读取16个字符存放在SOURCE开始的内存单元中。
(2)将SOURCE开始的16个字符按逻辑尺L的内容决定是否在字符的最高位置1,然后依次放在RESULT开始的内存单元中。
(1)将处理之后的字符串存入到OUTPUT1.DAT。
第二步:用相应程序汇编实现其功能。
(1)数据的读取和存入题目中已经给出,只要完成16个字符的最高位置1操作即可。
(2)对于一个数组的排序操作可按下面的方法进行。从0到15依次取得逻辑尺L的第i位的值,若为0,则不对SOURCE[i]作操作;否则,计算SOURCE[i]中1的个数,若为奇数则在SOURCE[i]的最高位置1,否则不作操作,然后将其存放在RESULT开始的内存单元中。
这里我们仍然采用填空,而不重新编写程序,采用填空的方式解题对于我们阅读程序的能力会有所帮助。通过阅读程序我们发现程序是采用循环的方式测试一个数的第i位是否为1(要么将被测试数进行移位操作,然后与1进行TEST运算,要么将1进行移位操作,与被测试数进行TEST运算均可获得结果),然后根据第i位是否为1加偶校验位。

名词解释