下面是将内存一字节数据高四位和低四位互换并放回原位置的程序,其中有7个语句中有错误,请找出错误的地方并改正。 第1行 DATA SEGMENT 第2行 DD1 DB 23H 第3行 DATA ENDM 第4行 CODE SEGMENT 第5行 ASSUME CS:CODE,DS:DATA 第6行 START MOV AX,DATA 第7行 MOV DS,AX 第8行 LEA SI,OFFSET DD1;取变量DD1的偏移地址 第9行 MOV AL,[SI] 第10行 MOV DL,4;设置移位次数 第11行 RCR AL,CL;循环右移4次 第12行 MOV [SI],AL 第13行 MOV AH,4CH 第14行 INT 21H 第15行 CODE ENDP;代码段结束 第16行 END BEGIN
第1题:
完成下面的程序段,使程序显示中的字符串。
DATA SEGMENT
BUE DB ‘HOW DO YOU DO?’,ODH,OAH,’$‘
┆
DATA ENDS
CODE SEGMENT
┆
MOV AX,DATA
MOV DS,AX
┆
MOV DX【 】
MOV AH, 9
INT 21H
┆
CODE ENDS
第2题:
阅读以下说明和x86汇编语言代码,根据要求回答问题1至问题3。表6-3所示为 x86系统指令及寄存器说明表。
[说明]
在计算机控制中,有些数据补偿、计算及转换等参数的计算非常复杂,编程难,程序长且运算费时,但是用数表却比较容易实现。
设有256个字节的数据,已按从小到大的顺序存放在以BINTAB为首地址的数据区单元中,现要求查找其中值为126的数据,用对分查表法查询的汇编程序如下:
[汇编程序代码]
DATA SEGMENT
BINTAB DBl8,25,32,46,56,78,… ;第1~100个数据
DB 90,95,99,100,106,126,… ;第101~200个数据
DB 189,195,197,202,206,216,… ;第201~256个数据
COUNT EQU 256
FLAG DW ?
KEY EQU (1)
DATA ENDS
STAK SEGMENT
STPN DB 20 DUP(?)
STAK ENDS
CODE SEGMENT
ASSUME CS,CODE, DS,DATA, ES:DATA, SS:STAK
BINSEAT PROC FAR
START, MOV AX, DATA
MOV DS, AX
MOV ES, AX
LEA SI, BINTAB
MOV CX, COUNT
MOV DX, 1
MOV AX, SI
ADD AX, CX
MOV DI, AX
MOV AL, KEY
LOP0, MOV BX, SI
ADD BX, DI
SHR BX, 1
CMP AL, [BX]
JZ FOUND
PUSHF
(2)
JZ NFOUND
POPF
JL LESS
MOV SI, BX
JMP NEXT
LESS, (3)
NEXT, (4)
JMP LOP0
NFOUND: MOV AX, DX ;未找到,标志全1送DX
FOUND: MOV AX, DX
MOV FLAG, AX
RET
BINSEAT ENDP
CODE ENDS
(5)
请根据试题的要求,将汇编程序代码中(1)~(5)空缺处的内容填写完整。
第3题:
执行下列程序后,(CX)=( )。 DATA SEGMENT A DW 1, 2, 3, 4, 5 B DW 5 DATA SEGMENT CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA BX, A ADD BX, B MOV CX, [BX] MOV AH, 4CH INT 21H CODE ENDS END START
A.400
B.0
C.10
D.100
第4题:
DSEG SEGMENT
BUF DB 1,5,4,0,7,9,2,6
L EQU O0111001B 用作逻辑尺
RESULT DB 10 DUP(?)
DSEG ENDS
SSEG SEGMENT STACK
DB 256 DUP(0)
SSEG ENDS
CSEG SEGMENT
ASSUME DS:DSEG; SS:SSECG, CS:CSEG
START PROC FAR
PUSH DS
XOR AX, AX
PUSH AX
MOV AX, DSEG
MOV DS, AX
MOV SI, 0
MOV CX, 8
MOV DL, L
GOON: SHR DL, 1
JC FILL
MOV AL, BUF[SI]
JMP NEXT
FILL: MOV AL, OFFH
NEXT: MOV RESULT[SI], AL
INC SI
LOOP GOON
RET
START ENDP
CSEG ENDS
END START
在保持以上程序功能不变的前提下,INCSI指令可以用【 】指令替换。
第5题:
在书写汇编语言程序时,在代码段中初始位置要对数据段进行加载,加载的指令语句,下面()描述正确。
第6题:
阅读下列程序段,指出①~④ 条语句操作的结果,并分析其中有错误的语句。 DATA SEGMENT V1 DB 5 V2 EQU 10 DATA ENDS ① INC V1 ② INC V2 ③ MOV AX, V2 ④ INC AX
第7题:
阅读下面的程序,回答问题 DATA SEGMENT BUF DB '1234' N=$-BUF BCD DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LEA DI,BCD+N-1 LOOP1:MOV AL,[SI] SUB AL,30H MOV [DI],AL INC SI DEC DI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START 取消数据段的BCD存储区,将处理后的数据放回原处,应如何修改程序?
第8题:
阅读下面的程序,回答问题 DATA SEGMENT BUF DB '1234' N=$-BUF BCD DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LEA DI,BCD+N-1 LOOP1:MOV AL,[SI] SUB AL,30H MOV [DI],AL INC SI DEC DI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START 说明程序功能,程序执行后,从BCD开始的N个字节单元中的内容是什么?
第9题:
阅读下面的程序,回答问题 DATA SEGMENT BUF DB '1234' N=$-BUF BCD DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LEA DI,BCD+N-1 LOOP1:MOV AL,[SI] SUB AL,30H MOV [DI],AL INC SI DEC DI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START 如果将代码段中的指令LEA DI,BCD+N-1改成LEA DI,BCD;DEC DI改成INC DI,其它指令不变,程序执行后,从BCD开始的N个字节单元中的内容是什么?
第10题:
第11题:
第12题:
第13题:
阅读下述程序,指出宏指令ABC的功能是______。
1 ABC MACRO X1,X2,X3
2 LOCAL CONT
3 PUSH AX
4 MOV AX, X1
5 SUB AX, X2
6 CMP AX, 0
7 JGE CONT
8 NEG AX
9 CONT: MOV X3, AX
10 POP AX
11 ENDM
12 DATA SEGMENT
13 X DW 32
14 Y DW 98
15 Z DW ?
16 DATA ENDS
17 CODE SEGMENT
18 ASSUME CS:CODE,DS:DTAT
19 BEGIN: MOV AX, DATA
20 MOV DS,AX
21 ABC X,Y,Z
22 MOV AH, 4CH
23 INT 21H
24 CODE ENDS
25 END BEGIN
第14题:
下面的程序用来从键盘重复接收一字符送BUFF开始的单元,直到接收到行结束
标志ODH。在程序中填空,保证其正确运行。
1 DATA SEGMENT
2 BUFF DW 128 DUP(0)
3 DATA ENDS
4 CODE SGEMENT
5 ASSUME CS:CODE,DS:DATA
6 BEGIN: MOV AX, DATA
7 MOV DS, AX
8 LEA SI, BUFF
9 GCH: MOV AH, 01H
10 INT 21H
11 MOV [SI], AL
12 INC SI
13 __________
14 JNE GCH
15 MOV AH, 4CH
16 INT 21H
17 CODE ENDS
18 END BEGIN
第15题:
下述程序的功能是求变量X和变量Y的和送AX寄存器,请填空。
DATA SEGMENT
X DW 5
Y DW 6
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
BEGIN: MOV AX, DATA
MOV DS, AX
MOV AX, X
ADD AX, Y
MOV AH, 4CH
INT 21H
_________
END BEGIN
第16题:
已知A是一个变量,下列使用取偏移算符OFFSET错误的语句为()。
第17题:
指出下列指令中哪些是错误的,错在什么地方。 (1)MOV DL,AX (2)MOV 8650H,AX (3)MOV DS,0200H (4)MOV [BX],[1200H] (5)MOV IP,0FFH (6)MOV [BX+SI+3],IP (7)MOV AX,[BX][BP] (8)MOV AL,ES:[BP] (9)MOV DL,[SI][DI] (10)MOV AX,OFFSET 0A20H (11)MOV AL,OFFSET TABLE (12)XCHG AL,50H (13)IN BL,05H (14)OUT AL,0FFEH
第18题:
阅读下列程序段,注释指令中属性分离符的功能。 DATA SEGMENT A DW 20,100,-60H B DB ‘ABCDEFG ’ DATA ENDS ┆ ①MOV AX, SEG B ②MOV BX, OFFSET B ③MOV CX, TYPE A ④MOV DX , TYPE B
第19题:
阅读下面的程序,回答问题 DATA SEGMENT BUF DB '1234' N=$-BUF BCD DB N DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START:MOV AX,DATA MOV DS,AX LEA SI,BUF MOV CX,N LEA DI,BCD+N-1 LOOP1:MOV AL,[SI] SUB AL,30H MOV [DI],AL INC SI DEC DI DEC CX JNE LOOP1 MOV AH,4CH INT 21H CODE ENDS END START 找出一条指令代替指令“SUB AL,30H”,使程序功能不变。
第20题:
分析下列指令的正误,对于错误的指令要说明原因并加以改正。 (1) MOV AH,BX (2) MOV [BX],[SI] (3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX (5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MAYDAT[SI] (7) MOV CS,AX (8) MOV DS,BP
第21题:
已经定义数据段如下: DATASEGMENT NUM=56 X DB NUM Y DB 27 Z DW 148 DATAENDS 指出下列指令中的错误: (1)MOV Y,X (2)MOV BL,04B8H (3)MOV AL,Z (4)MOV [BX],3 (5)MOV [BX],[DI] (6)MOV DS,DATA (7)MOV NUM,AX (8)MOV ES,DS (9)MOV AX,FLAGS (10)MOV CS,AX
第22题:
mov ax,data
mov ds,data
mov ax,data mov ds,ax
mov ax,ds mov cs,ds
第23题: