汇编语言程序第二次作业

合集下载

2020年中国石油大学北京网络学院 汇编语言程序设计-第二次在线作业 参考答案

2020年中国石油大学北京网络学院 汇编语言程序设计-第二次在线作业 参考答案

中国石油大学北京网络学院
汇编语言程序设计-第二次在线作业
参考答案
1.(
2.5分)下列叙述正确的是:
A、对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS 指令
B、对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP 指令
C、对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL 指令
D、对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB 指令
我的答案:C 此题得分:2.5分
2.(2.5分)在下列指令的表示中,不正确的是:
A、MOV AL,[BX+SI]
B、JMP SHORT DONING
C、DEC [BX]
D、MUL CL
我的答案:C 此题得分:2.5分
3.(2.5分)在进行二重循环程序设计时,下列描述正确的是:。

汇编语言课后作业

汇编语言课后作业

《汇编语言》课后作业第一次作业1、编写程序,将AX寄存器中的16位数,每连续4位分成一组,共4组,然后把这4组数分别放在AL、BL、CL和DL寄存器中。

用Debug工具调试程序,查看每条指令执行后,各寄存器的变化。

第二次作业1、编写程序求数据段中8个字节型数据的累加和。

部分代码如下。

Assume cs:codesg, ds:datasgDatasg segmentDB 02H,13H, 02H, 35H, 1AH, 35H, 00H, 12HDW 0H ;此字型单元用来保存累加和Datasg ends第三次作业1、编写程序,将内存中03FF:0~03FF:F中的16个数据复制到内存0000:200~0000:20F中。

2、编写程序,利用堆栈将内存中03FF:0~03FF:F中的16个数据逆序复制到内存0000:200~0000:20F中。

第四次作业1、编写程序,在命令行窗体中输出如下图案(红底绿字高亮闪烁)。

程序执行效果,请在DOS命令行下运行zy4.exe文件。

第五次作业1、编写程序,将数据段中的字符串完成大小写转换。

字母字符大写转换成小写,小写转换成大写,其他字符不变。

如:datasg segmentdb '$BaSic!InfOrIon*'datasg ends程序执行后,数据段中的字符串变成了’$bAsIC!iNFoRiON*’。

是有debug工具查看数据段内容如下:1)执行转换前,数据段的内容如下图2)执行转换后,数据段的内容如下图选做题(该题不计入课后作业成绩)1、编写程序,将数据段中的字型数据以10进制的形式显示。

如:data segmentdw 35A6Hdata ends35A6H十进制值为13734,显示为13734,如下图:。

2012年上半年汇编语言第二次作业

2012年上半年汇编语言第二次作业

2012年上半年汇编语言第二次作业一、应用题1-8 每个5分1:试按下列要求在数据段中依次书写各数据定义语句:(1)以DA1为首字节的连续存储单元中存放20H个重复的数据序列:2,3,10个4,一个7(2)DA2为字符串变量,用字变量(DW)设置一字符串:‘STUDENTS’(按此顺序存放在各单元中)2、V AR DB 2 DUP ( 1 , 2 , 2 , DUP ( 3 ) , 2 DUP ( 1 ) )在V AR 存储区前5个单元的数据是多少?3、执行下列程序段后,(AX)=?ARRAY DW 10 DUP (2)XOR AX ,AXMOV CX,LENGTH ARRAYMOV SI,SIZE ARRAY-TYPE ARRAYNEXT:ADD AX,ARRAY[SI]SUB SI,TYPE ARRAYLOOP NEXT4:现有如下程序段:DATA SEGMENTORG 0020HDA1 DW 12H,23HDA2 DB 11H,21HDA3 EQU 1234HDA4 EQU $-DA2DA5 DB 31H,32HDATA ENDS(1)该程序段已占有的存储字节数是多少?(2)符号名DA4的值是多少?符号名DA5的值是多少?5、设一程序段定义如下:ORG 0024HAR1 DW 4, 5, $+4……MOV AX , AR1+4执行后AX=?6、程序的功能BEGIN:MOV AH,1INT 21HCMP AL,’a’JB stopcmp al,’z’JA STOPSUB AL,20HMOV DL,ALMOV AH,2INT 21HJMP BEGINRET7:分析下列程序段,回答指定问题:XOR AL,ALCALL SUBSMOV BL,ALCALL SUBSRCR AL,1HLTSUBS :PROC NEARNOT ALJS NEXTSTCNEXT:RETSUBS ENDP程序运行后AL=?BL=?AL=80H BL=0FFH8:分析下列程序段,回答指定问题:10A3H:2000H XOR AL,AL2002H MOV AX,CS2004H MOV SS,AX2006H MOV SP,2F00H2009H MOV DX,2012H200CH PUSH DX200DH CALL 2700H2010H ADD CX,DX2012H HLT10A3H:2700H POP CXRET执行后:(AX)=?(SP)=?(DX)=?(CX)=?ZF=?AX=10A3H SP=2F00H DX=2012H CX=2010H ZF=1二、用其它指令完成和下列指令相同的功能(10分)(1)REP MOVSB(2)REP LODSB(3)REP STOSB(4)REPE SCASBNEXT :MOV DL,[SI]MOV [DI],DLINC SI (DEC SI)INC DI(DEC DI)LOOP NEXTNEXT:MOV AL,[SI]INC SI(DEC)LOOP NEXT三、每题10分,共50分1、写一个把字符串中的所有大写字母改为小写字母.设字符串以0 结尾.2、编写一程序段,在CHAR为首址的26个字节单元中依次存放字母‘A’~’Z’3、编一程序在以BUF为首址的字节单元中存放了COUNT个无符号数,找出其中最大数送MAX单元。

汇编语言作业二

汇编语言作业二

作业报告二一、题目理解下面的程序,完成对数据段中数据的从小到大排序,并输出。

输出功能块label2已给出,通过CALL和RET实现调用。

DATAS SEGMENTDB2,5,6,8,3,7,4,9,2,6,1DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AX;输出原来排序mov cx, 9mov bx,0call label2;把DATAS中的数从小到大排序;换行mov dl, 10MOV AH,6INT 21Hmov dl, 13MOV AH,6INT 21H;输出新排序mov cx, 9mov bx,0call label2MOV AH,4CHINT 21H;输出排序子程序label2:mov dl, [bx]add dl, 30HMOV AH,6INT 21HINC BXloop label2retCODES ENDSEND START 二、分析2.外层循环次数用PUSH CX先保存三、主要代码DATAS SEGMENTDB2,5,6,8,3,7,4,9,2,6,1;此处输入数据段代码DATAS ENDSSTACKS SEGMENT;此处输入堆栈段代码STACKS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATAS,SS:STACKS START:MOV AX,DATASMOV DS,AX;输出原来排序mov cx, 10mov bx,0call label2;把DATAS中的数从小到大排序MOV SI,0call BUBBLE;换行mov dl, 10MOV AH,6INT 21Hmov dl, 13MOV AH,6INT 21H;输出新排序mov cx, 10mov bx,0call label2;此处输入代码段代码MOV AH,4CHINT 21H;输出排序子程序label2:mov dl, [bx]add dl, 30HINT 21HINC BXloop label2retBUBBLE:L1: PUSH CXL2: MOV AX,[SI]CMP AX,[SI+1]jna NEXTXCHG AX,[SI+1]MOV [SI],AXADD SI,1NEXT:ADD SI,1LOOP L2POP CXLOOP L1retCODES ENDSEND START四、执行结果如图五、总结1.出现错误原因是排序代码段BUBBLE写在了“CODES ENDS END START”之后。

汇编语言第二次实验报告

汇编语言第二次实验报告

汇编语言实验报告姓名:王先海专业:网络工程班级:133班学号:139074347实验内容一:编写一个程序,用来显示AL寄存器中的两位十六进位制数程序清单:datas segmentdata db '0123456789ABCDEF'datas endscodes segmentassume cs:codes,ds:datasstart: mov ax,55hmov bx,datasmov ds,bxmov bx,offset datapush axmov cl,04hlab1: shr al,1 ;循环4次逻辑右移1位取高位16进制数dec cljnz lab1xlatmov dl,almov ah,2int 21hpop axmov cl,04hmov ch,7fhlab2: and al,ch ;循环4次and使al高四位清零ror ch,1dec cljnz lab2xlatmov dl,almov ah,02hint 21hmov ah,4chint 21hcodes endsend start1.运行结果:2.思考与体会:循环需要一个跳出条件。

XLAT指令用来将AL中的内容置换成以(BX)为首址(AL)为位移量的内存单元中的内容。

实验内容二:1.程序说明:本程序是用来判别键盘上输入的字符:若是1-9字符,则显示之;若为A-Z或a-z字符,均显示“c”;若是回车字符<CR>,z则结束程序,若为其他字符则不显示,继续等待新的字符输入。

首先输入一个字符,将其和回车字符比较,若是回车字符,则结束程序。

1-9字符,则显示之。

若是若小于0,则重新等待输入。

若大于9,则跳转到和‘A’、Z’比较,若小于’A’,则重新等待输入,若大于’Z’,则跳转到和’a’、’z’比较处,若小于a或大于z,则重新等待输入,否则输出‘c’。

2.程序清单:datas segmentstr db ?,0ah,0dh,'$',' input again!',0ah,0dh,'$'datas endscodes segmentassume cs:codes,ds:datasstart: mov ax,datasmov ds,axnext1: mov ah,01hint 21hcmp al,0dhjz exitlea dx,strmov bx,dxnext2: cmp al,'1'jb next7cmp al,'9'ja next3mov [bx],aljmp next6next3: cmp al,'a'jb next4cmp al,'z'ja next7jmp next5next4: cmp al,'A'jb next7cmp al,'Z'ja next7next5: mov [bx],byte ptr 'c'next6: mov ah,9int 21hjmp next1next7: lea dx,str+4mov ah,9int 21hjmp next1exit: mov ah,4chint 21hcodes endsend start3.运行结果:4.思考与体会:根据条件判定进入不同的分支程序。

汇编第二次上机实验

汇编第二次上机实验

汇编第二次上机实验班级:姓名:学号:时间:2012年11月2日题目:写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的AUGEND和附加段E_SEG中的ADDEND相加,并把结果放在D_SEG中的SUM中。

其中AUGEND,ADDEND和SUM均为双精度数,AUGEND赋值为99251,ADDEND赋值为-15962。

一、设计思路在数据段中分配两个双字AUGEND和SUM,AUGEND初始化为99251,在附加段中分配一个双字ADDEND并初始化为-15962。

然后利用寄存器AX对低位字相加,DX对高位字相加。

最后将结果放回SUM单元。

二、详细设计过程1.设计源代码新建一个文本文件,并把拓展名改为asm,我命名为“plus.asm”。

根据上述思路,设计出源代码。

写好之后先自行检查一下,更改语法错误并保存。

最终代码见附录。

2.对源程序进行汇编在命令提示符下,转到源文件plus.asm所在目录,输入命令“masm plus”。

若汇编有错误,根据错误提示修改源文件并重新汇编,直到显示“0 Waring Errors和0 Severe Errors”,汇编通过。

结果如图1。

图1 汇编结果3.用LINK程序产生EXE文件上一步产生的OBJ文件虽然是二进制的,但不是可执行的,还必须通过连接程序进行连接,使其转换成EXE可执行文件。

输入命令“link plus”,按ENTER,根据提示进行操作。

由于源程序中没有定义堆栈段,而是使用系统的堆栈段,连接程序给出无堆栈段的警告,但并不影响程序运行,如图2。

到此,已经得到了程序。

图2 连接结果4.执行和调试程序输入命令“plus”,发现并没显示结果如图3。

这是因为程序中没有调用中断把结果输出到屏幕上,其实程序已经瞬间执行完成并返回DOS了。

要看到执行的结果,只能使用命令调试程序了。

调用命令“debug plus.exe”,在调试模式下,输入“t d”执行13条指令,使程序停止在RETF指令处,用“d DS:0,LA”和“d ES:0,LA”显示数据段和附加段的前10个字节,如图4。

2007_汇编第2次上机题

2007_汇编第2次上机题

《汇编语言程序设计》第二次上机一、目的1、加深对一些常用的汇编指令的理解;1、加深对常用DOS功能调用指令的理解;3、进一步熟悉TD的使用。

二、题目1、《80X86汇编语言程序设计》教材中 P95的 3.7 题。

要求:(1)将该题改成一完整的程序(可以省略实验报告中的程序框图)。

(2)请事先指出依次执行每条程序指令后(AX)的内容。

(3)请事先指出执行ADD、SUB、SAL、RCL指令后,CF、ZF的值。

(4)记录上机执行后与(2)、(3) 中对应的内容。

说明:MOV 指令不影响标志位,DEC指令不影响CF标志位,NOT 指令不影响标志位。

2、《80X86汇编语言程序设计》教材中 P94的 3.3 题。

要求:(1)将该题改成一完整的程序,其中数据段的定义为习题3.1中的数据段(可以省略实验报告中的程序框图)。

(2)请事先画出数据段中数据的存储形式。

(3)请事先指出依次执行每条程序指令后相应寄存器中的内容。

(4)请事先给出各调指令在汇编后的形式。

(5)比较上机执行后,看到的各项内容是否与(2)、(3) ,(4)内容一致。

不一致的应分析错误原因。

说明:MOV BX, OFFSET STR1+3 对应的汇编后的指令为:MOV BX, 3 MOV BX, STR1 对应的汇编后的指令为:MOV BX, [0000](上条指令等价于MOV BX, DS:[0000] )3、《80X86汇编语言程序设计》教材中 P96的 3.11 题。

要求:(1)请事先指出程序运行结束后,显示器显示的内容。

(2)若将NUM的定义改成如下形式:NUM DB 35显示的结果是什么?(3)若将NUM的定义改成如下形式:NUM DB 59显示的结果是什么?(4)指出程序运行后看到的结果,若不一致,分析产生错误的原因。

4. 从键盘输入两串字符分别存入BUF1和BUF2区,比较两串内容是否相等,相等显示“MATCH !”, 不相等显示“NO MATCH !”。

汇编语言程序第二次作业

汇编语言程序第二次作业

一、单项选择题(只有一个选项正确,共10道小题)1. 若PORT_VAL<5,则执行指令MOV BX,((PORT_VAL LT 5) AND 20) OR ((PORT_VAL GE 5) AND30)后BX的内容是:()。

(A) 20(B) 30(C) 5(D) 10未选择 [错误]正确答案:A解答参考:2. 假设(AL)=,MOV CL,4SHL AL,CL执行上述指令后CF和AL的内容是()。

(A) AF=1,(AL)=00001001(B) AF=0,(AL)=00001001(C) AF=1,(AL)=00100000(D) AF=0,(AL)=00100000你选择的答案:未选择 [错误]正确答案:C解答参考:3. 下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()。

TEST BH,01H_____K1(A) JNE(B) JZ(C) JS(D) JC你选择的答案:未选择 [错误]正确答案:A解答参考:4. 已知标号NEXT与指令MOV AX,TYPE NEXT在同一个段内,则AX的值为()。

(A) 0(B) 1(C) 2(D) -1你选择的答案:未选择 [错误]正确答案:B解答参考:5. DATA SEGMENTBUF DB 1,2,3,4,5COUNT EQU -BUFDATA ENDS在以上数据段中COUNT的值为( )(A) 3(B) 5(C) 4(D) 6正确答案:B解答参考:6. 下列是8位二进制数的补码,其中真值最大的是()。

(A)(B)(C) 00000000(D) 00000001你选择的答案:未选择 [错误]正确答案:D解答参考:7. 16位有符号数的补码所表示的十进制数的范围是()。

(A) -32767~+32768(B) -32768~+32767(C) -65535~+65536(D) 0~65535你选择的答案:未选择 [错误]正确答案:B解答参考:8. 下面的XCHG指令中,语法正确的是( )。

《编译原理》习题解答:

《编译原理》习题解答:

《编译原理》习题解答:第一次作业:P14 2、何谓源程序、目标程序、翻译程序、汇编程序、编译程序和解释程序?它们之间可能有何种关系?答:被翻译的程序称为源程序;翻译出来的程序称为目标程序或目标代码;将汇编语言和高级语言编写的程序翻译成等价的机器语言,实现此功能的程序称为翻译程序;把汇编语言写的源程序翻译成机器语言的目标程序称为汇编程序;解释程序不是直接将高级语言的源程序翻译成目标程序后再执行,而是一个个语句读入源程序,即边解释边执行;编译程序是将高级语言写的源程序翻译成目标语言的程序。

关系:汇编程序、解释程序和编译程序都是翻译程序,具体见P4 图 1.3。

P14 3、编译程序是由哪些部分组成?试述各部分的功能?答:编译程序主要由8个部分组成:(1)词法分析程序;(2)语法分析程序;(3)语义分析程序;(4)中间代码生成;(5)代码优化程序;(6)目标代码生成程序;(7)错误检查和处理程序;(8)信息表管理程序。

具体功能见P7-9。

P14 4、语法分析和语义分析有什么不同?试举例说明。

答:语法分析是将单词流分析如何组成句子而句子又如何组成程序,看句子乃至程序是否符合语法规则,例如:对变量x:= y 符合语法规则就通过。

语义分析是对语句意义进行检查,如赋值语句中x与y类型要一致,否则语法分析正确,语义分析则错误。

P15 5、编译程序分遍由哪些因素决定?答:计算机存储容量大小;编译程序功能强弱;源语言繁简;目标程序优化程度;设计和实现编译程序时使用工具的先进程度以及参加人员多少和素质等等。

补充:1、为什么要对单词进行内部编码?其原则是什么?对标识符是如何进行内部编码的?答:内部编码从“源字符串”中识别单词并确定单词的类型和值;原则:长度统一,即刻画了单词本身,也刻画了它所具有的属性,以供其它部分分析使用。

对于标识符编码,先判断出该单词是标识符,然后在类别编码中写入相关信息,以表示为标识符,再根据具体标识符的含义编码该单词的值。

汇编第二次试验

汇编第二次试验

汇编第二次实验计网112班田凯飞1107300215一、实验题目编写一个子程序嵌套结构的程序模块,分别从键盘输入姓名以及8个字符的电话号码,并以一定的格式显示出来。

主程序TELIST:(1)显示提示符INPUT_NAME:;(2)调用子程序INPUT_NAME输入姓名;(3)显示提示符INPUT A TELPHONE NUMBER:;(4)调用子程序INPHONE输入电话号码;(5)调用子程序PRINTLINE显示姓名及电话号码。

子程序INPUT_NAME:(1)调用键盘输入子程序GETCHAR,把输入的姓名存放在INBUF缓冲区内;(2)把INBUF中的姓名移入输出行OUTPHONE。

子程序INPHONE:(1)调用键盘输入子程序GETCHAR,把输入的8位电话号码存放在INBUF缓冲区中;(2)把INBUF中的号码移入输入行OUTPHONE。

子程序PRINTLINE:显示姓名及电话号码,格式为:NAME TELXXX XXX二、实验代码data segmentinbuf db 12 dup(' ')outname db 16 dup(' ')outphone db 12 dup(' '),13,10,'$'hint1 db 'Input Name:','$'hint2 db 'Input a Telephone Number:','$'hint3 db 'Name:',12 dup(' '),'Tel:',13,10,'$'crlf db 13,10,'$'data endsstack segmentdw 100 dup(?)tos label wordstack endsprompt macro messagemov ah,9lea dx,messageint 21hendmcode segmenttelist proc farassume cs:code,ds:data;,es:data,ss:stackstart:mov ax,stackmov ss,axmov sp,offset tospush dssub ax,axpush axmov ax,datamov ds,axmov es,axprompt hint1 ;提示输入姓名call input_name ;输入姓名prompt hint2 ;提示输入电话号码call inphone ;输入电话号码call printline ;输出姓名及电话号码rettelist endpinput_name proc nearcall getcharlea si,inbuflea di,outnamemov cx,12cldrep movsbretinput_name endpinphone proc nearcall getcharlea si,inbuflea di,outphonemov cx,12cldrep movsbretinphone endpgetchar proc nearmov al,20hmov cx,12lea di,inbufcldrep stosbmov cx,12mov di,0 input:mov ah,1int 21hcmp al,0dhjz quitmov inbuf[di],alinc diloop input quit:prompt crlfretgetchar endpprintline proc nearprompt hint3prompt outnameretprintline endpcode endsend start三、实验截图。

汇编语言程序第二次作业讲述

汇编语言程序第二次作业讲述

一、单项选择题(只有一个选项正确,共10道小题)1. 若PORT_VAL<5,则执行指令MOV BX,((PORT_VAL LT 5) AND 20) OR ((PORT_VAL GE 5) AND 30)后BX的内容是:()。

(A) 20(B) 30(C) 5(D) 10正确答案:A解答参考:2. 假设(AL)=10010010,MOV CL,4SHL AL,CL执行上述指令后CF和AL的内容是()。

(A) AF=1,(AL)=00001001(B) AF=0,(AL)=00001001(C) AF=1,(AL)=00100000(D) AF=0,(AL)=00100000正确答案:C解答参考:3. 下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()。

TEST BH,01H_____K1(A) JNE(B) JZ(C) JS(D) JC正确答案:A解答参考:4. 已知标号NEXT与指令MOV AX,TYPE NEXT在同一个段内,则AX的值为()。

(A) 0(B) 1(C) 2(D) -1正确答案:B解答参考:5. DATA SEGMENTBUF DB 1,2,3,4,5COUNT EQU -BUFDATA ENDS在以上数据段中COUNT的值为( )(A) 3(B) 5(C) 4(D) 6正确答案:B解答参考:6. 下列是8位二进制数的补码,其中真值最大的是()。

(A) 10001000(B) 11111111(C) 00000000(D) 00000001正确答案:D解答参考:7. 16位有符号数的补码所表示的十进制数的范围是()。

(A) -32767~+32768(B) -32768~+32767(C) -65535~+65536(D) 0~65535正确答案:B解答参考:8. 下面的XCHG指令中,语法正确的是( )。

(A) XCHG AL,DS(B) XCHG BL,[BX](C) XCHG AL,0FH(D) XCHG BUF1,BUF2正确答案:B解答参考:9. LDS SI,ES:[2000H]指令的全部功能是( )。

2020年春【中石油】汇编语言程序设计第二次在线作业(标准)

2020年春【中石油】汇编语言程序设计第二次在线作业(标准)

【石油大学】汇编语言程序设计-第二次在线作业试卷总分:100 得分:100第1题,1.(2.5分)下列叙述正确的是:A、对两个无符号数进行比较采用CMP指令,对两个有符号数比较用CMPS指令B、对两个无符号数进行比较采用CMPS指令,对两个有符号数比较用CMP指令C、对无符号数条件转移采用JAE/JNB指令,对有符号数条件转移用JGE/JNL指令D、对无符号数条件转移采用JGE/JNL指令,对有符号数条件转移用JAE/JNB指令正确答案:C第2题,2.(2.5分)在下列指令的表示中,不正确的是:A、MOV AL,[BX+SI]B、JMP SHORT DONINGC、DEC [BX]D、MUL CL正确答案:C第3题,3.(2.5分)在进行二重循环程序设计时,下列描述正确的是:A、外循环初值应置外循环之外;内循环初值应置内循环之外,外循环之内B、外循环初值应置外循环之内;内循环初值应置内循环之内C、内、外循环初值都应置外循环之外D、内、外循环初值都应置内循环之外,外循环之内正确答案:A第4题,4.(2.5分)条件转移指令JNE的测试条件为:A、ZF=0B、CF=0C、ZF=1D、CF=1正确答案:A第5题,5.(2.5分)下列指令执行时出错的是:A、ADD BUF1,BUF2B、JMP DWORD PTR DAT [BX]C、MOV AX,[BX+DI] NUMD、TEST AL,08H正确答案:A第6题,6.(2.5分)在下列指令中,执行会影响条件码中的CF位的指令是:A、JMP NEXTB、JC NEXTC、INC BXD、SHL AX,1正确答案:D第7题,7.(2.5分)用户为了解决自己的问题,用汇编语言所编写的程序,称为:A、目标程序B、源程序C、可执行程序D、汇编程序正确答案:B第8题,8.(2.5分)用一条指令仅实现将BX+SI=&gt;AX的方法是:A、XCHG AX,[BX][SI]B、MOV AX,[BX+SI]C、LEA AX,BX[SI]D、LEA AX,[BX][SI]正确答案:D第9题,9.(2.5分)设SP初值为2000H,执行指令“PUSHAX”后,SP的值是:A、1FFFHB、1998HC、2002HD、1FFEH正确答案:D第10题,10.(2.5分)CBW指令的功能是:A、把源操作数的符号位扩展到目的操作数中B、把AL中的符号位扩展到AH中C、把AH中的符号位扩展到AL中D、把AX中的符号位扩展到DX中正确答案:B第11题,11.(2.5分)循环指令LOOPNZ终止循环的条件是:A、CX=0,且ZF=0B、CX=0,或ZF=1C、CX≠0,且ZF=0D、CX≠0,或ZF=1正确答案:B第12题,12.(2.5分)下列传送指令中有语法错误的是:A、MOV CS,AXB、MOV DS,AXC、MOV SS,AXD、MOV ES,AX正确答案:A第13题,13.(2.5分)与MOVBX,OFFSETVAR指令完全等效的指令是:A、MOV BX,VARB、LDS BX,VARC、LES BX,VARD、LEA BX,VAR正确答案:D第14题,14.(2.5分)MOVSP,3210HPUSHAX执行上述指令序列后,SP寄存器的值是:A、3211HB、320EHC、320FHD、3212H正确答案:B第15题,15.(2.5分)汇编语言源程序中,每个语句由四项组成,如语句要完成一定功能,那么该语句中不可省略的项是:A、名字项B、操作项C、操作数项D、注释项正确答案:B第16题,16.(2.5分)使计算机执行某种操作的命令是:A、伪指令B、指令C、标号D、助记符正确答案:B第17题,17.(2.5分)若AX=3500H,CX=56B8H,当ANDAX,CX指令执行后,AX=A、1400HB、77F8HC、0000HD、0FFFFH正确答案:A第18题,18.(2.5分)下面XCHG指令语句中,语法正确的是:A、XCHG AX,DSB、XCHG AX,[BX]C、XCHG AX,CSHD、XCHG[SI],[DX]正确答案:B第19题,19.(2.5分)设数据段有:DA1DBXX;是任一数据DA2DBOFEH下列两条指令:MOVDL,DA1ORDL,DA2执行后,DL中的内容可能是:A、.0FFH或0FEHB、只能是0FEHC、只能是0FFHD、只能是01H正确答案:A第20题,20.(2.5分)ORG100HNUMEQU8042HDA1DB56HMOVBX,0FFSETDA1上述程序段执行后BX 中的值是:A、56HB、100HC、101HD、102H正确答案:B第21题,21.(2.5分)指令JMPFARPTRDONE属于:A、段内转移直接寻址B、段内转移间接寻址C、段间转移直接寻址D、段间转移间接寻址正确答案:C第22题,22.(2.5分)将DX的内容除以2,正确的指令是:A、DIV 2B、DIV DX,2D、SHL DX,1正确答案:C第23题,23.(2.5分)AND,OR,XOR,NOT为四条逻辑运算指令,下面的解释正确的是:A、指令XOR AX,AX执行后,AX内容不变,但设置了标志位B、指令OR DX,1000H执行后,将DX最高位置1,其余各位置0C、指令AND AX,OFH执行后,分离出AL低四位D、NOT AX,执行后,将AX清0正确答案:C第24题,24.(2.5分)完成对CL寄存器的内容乘以4的正确操作是:A、ROL CL,1ROL CL,1B、MUL 4C、SHL CL,1SHL CL,1D、MOV CL,2SHL CL,CL正确答案:C第25题,25.(2.5分)下面各传送指令中,正确的是:A、MOV [DI],[SI]B、MOV [DX+DI],ALC、MOV WORD PTR [BX],0100HD、MOV AL,BX正确答案:C第26题,26.(2.5分)比较两个带符号的数A、B,当A=B时程序转移,测试的条件为:A、ZF=1B、ZF=0C、SF=1D、SF=0正确答案:A第27题,27.(2.5分)汇编源程序时,出现语法错误的语句是:A、MOV [BX+SI],BXB、MOV CL,[BP+DI]C、MOV CS,AX正确答案:C第28题,28.(2.5分)设AL=57H,BL=24H,执行指令SUBAL,BL后,寄存器内容为:A、AL=57H,BL=24HB、AL=33H,BL=24HC、AL=57H,BL=33HD、AL=33H,BL=0正确答案:B第29题,29.(2.5分)设CL=8,AL=0C8H,执行SARAL,CL后,AL中的数据是:A、0FFHB、80HC、00HD、0FEH正确答案:A第30题,30.(2.5分)已知BX=028AH,SI=0294H,(DS:051EH)=5432H。

汇编语言程序设计实验二及答案

汇编语言程序设计实验二及答案

实验二:汇编语程序设计一、实验目的旨在通过实验使同学了解汇编语言的程序结构和编程方法,可以编写出顺序程序、分支程序和一般的循环程序,并学会修改和调试方法。

二、实验环境MASM、LINK、DEBUG或包含此软件的相关软件三、实验内容1.1、从FIRST开始的100个单元中存放着一个字符串,结束符为$。

编写一个程序,统计该字符串中字母‘A’的个数。

DATA SEGMENTFIRST DB 'AGHI K…$’ ;定义字符串,结束符为$NUMBER DB ? ;结果存放单元DATA ENDSCODE SEGMENTASSUME CS: CODE, DS: DATASTART: MOV AX,DATA ;建立数据段的可寻址性MOV DS, AXMOV BL,0 ;BL用作统计计数器LEA DI,FIRST ;取字符串首址NEXT: MOV AL, [ DI] ;取一个字符INC DI ;指向下一个字符CMP AL,’$’ ;与结束符’$’比较JE EXIT ;等于,搜索完结束CMP AL , 'A ;与字符‘A’比较JNE NEXT ;不等于。

不统计INC BL ;找到,计数IMP NEXT ;继续EXIT: MOV NUMBER,BLMOV AH,4CHINT 21HCODE ENDSEND START2.编程判断输入的ASCII码字符时数字还是字母,并将判断结果分别以“D”和“L”显示出来。

解:用宏实现字符显示。

程序如下:DISPLAY MACRD CHAR;显示字符宏定义MOV DL,CHARMOV AH,02HINT 21HENDMCODE SEGMENTASSUME CS: CODESTART : MOV AH, 0lH ;输人一个ASCI I码字符INT 21 HCMP AL, '0’JC ERROR ;非数字和字母,转ERROR处理CMP AL, '9'JA NEXT ;非数字,转NERTDISPLAY 'D' ;数字。

汇编作业第二次循环程序设计

汇编作业第二次循环程序设计

昆明理工大学信息工程与自动化学院学生实验报告(2010--2011 学年第下学期)课程名称:汇编开课实验室: 2010年11月10日年级、专业、班2008计科083 学号姓名成绩实验项目名称循环程序设计教师袁梅宇教师评语教师签名:年月日实验二、循环程序设计一,实验要求:1)掌握循环程序的设计方法;2)输入并汇编起泡排序程序;3)观察并记录运行结果。

二、实验设计思路:(1)、把一组无序数存放在数组ARY中,计算数组中元素个数记作CT;(2)、初始化排序外层循环次数DI为CT-1,内层循环次数CX为DI;(3)、置地址指针指向数组第一个元素;若当前指针指向的数小于数组中的下一个数,则交换这两个数在数组中的位置;(4)、修改地址指针,指向当前指针的下一个元素,并让内层循环次数CX减1;(5)、若内层循环次数CX不等于0,则跳转到第(4)步执行;否则让外层循环次数DI减1;(6)、若外层循环次数DI不等于0,则跳转到第(2)不执行;否则说明排序完成;(7)、修改地址指针指向下一个元素,DI+1,判断循环显示次数DI是否为0,若不为0则跳转到第(9)步执行,否则说明整个程序运行完成,返回DOS功能调用。

三、流程图:开始初始化排序外层循环次数DI 为CT-1内层循环次数CX=0?YN 外层循环次数DI=0?N YN 结束初始化排序内层循环次数CX 为DI置地址指针指向第一个元素当前指针指向的数大于等于下一个数?YN 交换当前数与下一个数的位置修改地址指针,指向这两个数中的后一个内层循环次数CX 减1外层循环次数DI-1待排序元素个数为CT初始化显示循环次数DI为元素个数CT把当前指针指向的元素赋给ax 并把它转换成ASCII 码把AH 赋给DL调用INT21的2号功能显示DL修改地址指针指向下一个元素,DI+1DI=0?Y四、实验程序:STACKSG SEGMENT STACK 'S'DW 64 DUP('ST')STACKSG ENDSDATA SEGMENTARY DW 5,7,1,4,3,6,9,8,2 ;数组ARYCT EQU ($-ARY)/2 ;元素个数DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSGMAIN PROC FARMOV AX,DATAMOV DS,AXMOV DI,CT-1 ;初始化外循环次数LOP1:MOV CX,DI ;置内循环次数MOV BX,0 ;置地址指针LOP2:MOV AX,ARY[BX]CMP AX,ARY[BX+2] ;两数比较JGE CONT ;次序正确转,次序不正确互换位置XCHG AX,ARY[BX+2]MOV ARY[BX],AXCONT:ADD BX,2 ;修改地址指针LOOP LOP2 ;内循环控制DEC DI ;修改外循环次数JNZ LOP1 ;外循环控制MOV DI,CTMOV BX,0SHOW:MOV CL,10 ;显示数组MOV AX,ARY[BX]DIV CLADD BX,2OR AX,3030HMOV DL,AHMOV AH,2INT 21HDEC DIJNZ SHOWMOV AX,4C00H ;返回DOSINT 21HMAIN ENDPCODE ENDSEND MAIN五、实验结果以及分析:1、用“masm”指令汇编px.asm文件2、用“link”指令连接.obj 文件3、执行生成的可执行文件4、反汇编程序5、反汇编到程序结束6、用D命令显示内存单元状态7、显示0010到0050段的内存单元8、查看所有寄存器的状态9、查看某一个寄存器的状态,例如查看CX 寄存器10、修改寄存器,例如修改寄存器cx为000011、调用G命令显示排序结果12、用T命令逐条显示程序前骤13、初始化循环次数和地址指针14、内层循环,比较当前指针所指内容是否大于等于数组中其后的一个数,若是则转至CONT 执行,否则交换两个数的位置。

2014_汇编第2次上机题

2014_汇编第2次上机题

2014《汇编语言程序设计》第2次上机题一、目的(1) 加深对一些常用的汇编指令的理解;(2) 进一步熟悉TD的使用;(3) 进行简单的编程。

二、题目1、《80X86汇编语言程序设计》教材中 P45的 2.3题。

要求:(1) 分别记录执行到“MOV CX,10”和“INT 21H”之前的(BX), (BP),(SI),(DI)各是多少。

(2) 分别记录程序执行初期与退出之前数据段开始40个字节的内容,指出程序运行结果是否与设想的一致。

操作提示:使用TD.EXE调试程序时,应先单步执行程序开始的2条指令,实现对DS的赋值,再通过查看DS:0开始区域的内容,完成记录程序执行初期数据段内容的任务;然后,单步执行循环体中的各个语句,每执行一条语句,都应观察数据段中的内容以及相应寄存器的变化。

执行循环体两遍且正确理解了循环体语句的含义后,可在“MOV AH,4CH”处设置断点,然后直接执行到断点处,最终完成(2)和(3)的问题。

2、《80X86汇编语言程序设计》教材中 P45的 2.4题。

要求:(1) 实现的功能不变。

(2) 内存单元中数据的访问采用变址寻址方式。

(3) 记录程序执行到退出之前数据段开始40个字节的内容,检查程序运行结果是否与设想的一致。

操作提示:同第1个上机题3、编写程序设a和b是2个短整数(2个字节),c和d是2个字节型数据(1个字节)。

请编写一个完整的程序计算表达式:( (a + c) * d - 60 ) / b,并将结果(商和余数)保存到变量AA和BB中。

要求:用2组(a,b,c,d)的值:(2280h,1000h,80h,10h)、(100h,10h,80h,20h)去测试程序,查看result中的结果是否正确。

汇编语言程序设计第二次作业

汇编语言程序设计第二次作业

首页一.单选题(共40题,40.0分)1AOV网是一种( )。

•A、有向图•B、无向图•C、无向无环图•D、有向无环图正确答案: D 我的答案:D得分: 1.0分2指令“MOV AX,0FH XOR 1111B”执行后的结果是( )。

•A、0FFFFH→AX•B、0FH→AX•C、1111B→ AX•D、0→AX正确答案: D 我的答案:D得分: 1.0分3已知(AL)=35H, (BL)=57H,执行指令ADD AL, BLDAA后,AL的值为()。

•A、92HB、8CHC、92D、CH正确答案: A 我的答案:A得分: 1.0分4设Huffman树的叶子结点数为m,则结点总数为( )。

•A、2m•B、2m-1•C、2m+1•D、m+1正确答案: B 我的答案:B得分: 1.0分5以下程序段中,有数据2000H的字单元的偏移量分别是( )。

ORG 20HVAR1 DB 0,’0’,20H,0,20HDW VAR1•A、03H•B、21H•C、22H•D、23H•E、24H正确答案: D 我的答案:E得分: 0.0分6图所示二叉树结点的前序遍历的序列为( )。

•A、E、G、F、A、C、D、B•B、 E、A、G、C、F、B、D•C、E、A、C、B、D、G、F•D、E、G、A、C、D、F、B正确答案: C 我的答案:C得分: 1.0分7ORG 100HNUM EQU 42HDA1 DW $+56H……MOV BX,0FFSET DA1上述程序段执行后BX中的值是( )。

•A、42H•B、156H•C、100H•D、157H正确答案: C 我的答案:C得分: 1.0分8对线性表进行二分法查找,其前提条件是( )。

•A、线性表以链接方式存储,并且按关键码值排好序•B、线性表以顺序方式存储,并且按关键码值的检索频率排好序•C、线性表以顺序方式存储,并且按关键码值排好序•D、线性表以链接方式存储,并且按关键码值的检索频率排好序正确答案: C 我的答案:A得分: 0.0分9为实现单步操作,即每执行完一条指令就停下来,必须设置标志位( )。

汇编语言第二次离线作业答案

汇编语言第二次离线作业答案

2017-2018汇编语言第二次离线作业答案1、判断下列程序段跳转的条件(1)XOR AX,1E1EHJE EQUAL(2)TEST AL,10000001BJNZ THERE(3)CMP CX,64HJB THERE点评:本题目考查ZF,ZF=1比较结果等于0或相等转JZ/JEZF=0比较结果不等于0或不相等转JNZ/JNECF=1 JC/JB/JNAE:进位,低于,不高于等于,用于无符号数比较(1)XOR AX,1E1EH ;当AX与1E1EH异或后JE EQUAL;XOR指令两个操作数相应位相同该位为0,不同该位为1,该指令用于求反某些位,而不影响其他位。

XOR指令经常给寄存器清0同时使得CF也清零。

当AX=1E1EH时AX与1E1EH异或后为0, 跳转至标号EQUAL处(2)TEST AL,10000001BJNZ THERE;测试指令TEST进行与操作但不回送,当AL的D0或D7至少有一位为1(一个1或两个1)时操作结果非0,ZF=0,转标号THERE处,AL的D0和D7同时为0操作结果为则ZF=1转JNZ THERE 的下一条指令执行(3)CMP CX,64HJB THERE;根据CX-64H操作结果设置标志位(但是不回送CX),若CX(无符号数)<64H则转向标号THERE执行,否则即(CX>=64H) 执行下一条指令2、假设AX和SI存放的是有符号数,DX和DI存放的是无符号数,请用比较指令和条件转移指令实现以下判断:(1)若DX > DI,转到ABOVE执行;(2)若AX > SI,转到GREATER执行;(3)若CX = 0,转到ZERO执行;(4)若AX-SI产生溢出,转到OVERFLOW执行;(5)若SI≤A X,转到LESS_EQ执行;(6)若DI≤DX,转到BELOW_EQ执行。

无符号数比较时:低于等于JBE/JNA CF=1或ZF=1不低于等于JNBE/JA CF=0且ZF=0低于、不高于等于:JC/JB/JNAE,CF=1不低于,高于等于:JNC/JNB/JAE CF=0有符号数比较时:小于,JL/JNGE, SF<>OF不小于JNL/JGE SF=OF小于等于JLE/JNG, ZF<>OF或ZF=1不小于等于JNLE/JG SF=OF且ZF=0(1)若DX > DI,转到ABOVE执行DX和DI存放的是无符号数CMP DX,DI ;根据DX-DI设置标志位CF,ZF,若DX > DI则CF=0且ZF=0JA ABOVE ;CF=0且ZF=0,则转向标号ABOVE执行(=JNBE ABOVE )(2)若AX > SI,转到GREATER执行AX和SI存放的是有符号数CMP AX,SI ;根据AX-SI设置标志位,不回送。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、单项选择题(只有一个选项正确,共10道小题)1. 若PORT_VAL<5,则执行指令MOV BX,((PORT_VAL LT 5) AND 20) OR ((PORT_VAL GE 5) AND 30)后BX的内容是:()。

(A) 20(B) 30(C) 5(D) 10正确答案:A解答参考:2. 假设(AL)=10010010,MOV CL,4SHL AL,CL执行上述指令后CF和AL的内容是()。

(A) AF=1,(AL)=00001001(B) AF=0,(AL)=00001001(C) AF=1,(AL)=00100000(D) AF=0,(AL)=00100000正确答案:C解答参考:3. 下面指令序列测试BH中的数是否为奇数,若为奇数则转移至K1处,横线处的指令应为()。

TEST BH,01H_____K1(A) JNE(B) JZ(C) JS(D) JC正确答案:A解答参考:4. 已知标号NEXT与指令MOV AX,TYPE NEXT在同一个段内,则AX的值为()。

(A) 0(B) 1(C) 2(D) -1正确答案:B解答参考:5. DATA SEGMENTBUF DB 1,2,3,4,5COUNT EQU -BUFDATA ENDS在以上数据段中COUNT的值为( )(A) 3(B) 5(C) 4(D) 6正确答案:B解答参考:6. 下列是8位二进制数的补码,其中真值最大的是()。

(A) 10001000(B) 11111111(C) 00000000(D) 00000001正确答案:D解答参考:7. 16位有符号数的补码所表示的十进制数的范围是()。

(A) -32767~+32768(B) -32768~+32767(C) -65535~+65536(D) 0~65535正确答案:B解答参考:8. 下面的XCHG指令中,语法正确的是( )。

(A) XCHG AL,DS(B) XCHG BL,[BX](C) XCHG AL,0FH(D) XCHG BUF1,BUF2正确答案:B解答参考:9. LDS SI,ES:[2000H]指令的全部功能是( )。

(A) 把地址2000H送SI(B) 把地址2000H字单元的内容送SI(C) 把地址2000H字单元内容送SI,把2002H字单元内容送DS(D) 把地址2000H字单元内容送DS,把2002H字单元内容送SI正确答案:C解答参考:10. 数据定义如下:BUF1 DB 10BUF2 DW 20 DUP(?)实现将BUF1单元的内容与BUF2开始的第三个字节单元内容相比较的指令是()。

(A) CMP BUF1,BYTE PTR BUF2+3(B) MOV AL,BUF1CMP AL,BYTE PTR BUF2+2(C) MOV AL,BUF1CMP AL,BUF2+2(D) MOV AL,BUF1CMP AL BUF2+3正确答案:B解答参考:(注意:若有主观题目,请按照题目,离线完成,完成后纸质上交学习中心,记录成绩。

在线只需提交客观题答案。

)二、主观题(共15道小题)11.假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?(1) MOV BP, AL ;(2) MOV WORD_OP [BX+4*3][DI], SP(3) MOV WORD_OP1, WORD_OP2 ;(4) MOV AX, WORD_OP1[DX] ;(5) MOV SAVE_WORD, DS(6) MOV SP, SS:DATA_WORD [BX][SI](7) MOV [BX][SI], 2 ;(8) MOV AX, WORD_OP1+WORD_OP2(9) MOV AX, WORD_OP1-WORD_OP2+100(10) MOV WORD_OP1, WORD_OP1-WORD_OP2参考答案:假设下列指令中的所有标识符均为类型属性为字的变量,请指出下列哪些指令是非法的?它们的错误是什么?(1) MOV BP, AL ;错,寄存器类型不匹配(2) MOV WORD_OP [BX+4*3][DI], SP(3) MOV WORD_OP1, WORD_OP2 ;错,不能都是存储器操作数(4) MOV AX, WORD_OP1[DX] ;错,DX不能用于存储器寻址(5) MOV SAVE_WORD, DS(6) MOV SP, SS:DATA_WORD [BX][SI](7) MOV [BX][SI], 2 ;错,[BX][SI]未指出数据类型(8) MOV AX, WORD_OP1+WORD_OP2(9) MOV AX, WORD_OP1-WORD_OP2+100(10) MOV WORD_OP1, WORD_OP1-WORD_OP212.假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1) ADD VAR1, VAR2 ;(2) SUB AL, VAR1 ;(3) JMP LAB [SI] ;(4) JNZ VAR1 ;(5) JMP NEAR LAB ;参考答案:假设VAR1和VAR2为字变量,LAB为标号,试指出下列指令的错误之处:(1) ADD VAR1, VAR2 ;不能都是存储器操作数(2) SUB AL, VAR1 ;数据类型不匹配(3) JMP LAB [SI] ;LAB是标号而不是变量名,后面不能加[SI](4) JNZ VAR1 ;VAR1是变量而不是标号(5) JMP NEAR LAB ;应使用NEAR PTR13.有符号定义语句如下:BUFF DB 1, 2, 3, ‘123’EBUFF DB 0L EQU EBUFF - BUFF问L的值是多少?参考答案:L=6。

14.假设程序中的数据定义如下:LNAME DB 30 DUP (?)ADDRESS DB 30 DUP (?)CITY DB 15 DUP (?)CODE_LIST DB 1, 7, 8, 3, 2(1) 用一条MOV指令将LNAME的偏移地址放入AX。

(2) 用一条指令将CODE_LIST的头两个字节的内容放入SI。

(3) 用一条伪操作使CODE_LENGTH的值等于CODE_LIST域的实际长度。

参考答案:(1) MOV AX, OFFSET LNAME(2) MOV SI, WORD PTR CODE_LIST(3) CODE_LENGTH EQU -CODELIST;此语句必须放在CODELIST语句之后15.试编写一个汇编语言程序,要求对键盘输入的小写字母用大写字母显示出来。

参考答案:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’;输入字符<‘a’吗?JB STOPCMP AL, ‘z’;输入字符>‘z’吗?JA STOPSUB AL, 20H ;转换为大写字母,用AND AL, 1101 1111B也可MOV DL, AL ;显示一个字符的DOS调用MOV AH, 2INT 21HJMP BEGINSTOP: RET16.编写程序,从键盘接收一个小写字母,然后找出它的前导字符和后续字符,再按顺序显示这三个字符。

参考答案:程序段如下:BEGIN: MOV AH, 1 ;从键盘输入一个字符的DOS调用INT 21HCMP AL, ‘a’;输入字符<‘a’吗?JB STOPCMP AL, ‘z’;输入字符>‘z’吗?JA STOPDEC AL ;得到前导字符MOV DL, AL ;准备显示三个字符MOV CX, 3DISPLAY: MOV AH, 2 ;显示一个字符的DOS调用INT 21HINC DLLOOP DISPLAYSTOP: RET17.下面的程序段有错吗?若有,请指出错误。

CRAY PROCPUSH AXADD AX, BXRETENDP CRAY参考答案:程序有错。

改正如下:CRAY PROCADD AX, BXRETCRAY ENDP ;CRAY是过程名,应放在ENDP的前面18.写一段子程序SKIPLINES,完成输出空行的功能。

空出的行数在AX寄存器中。

参考答案:程序如下:CSEG SEGMENTSKIPLINES PROC FARASSUME CS: CSEGBEGIN: PUSH CXPUSH DXMOV CX, AXDISP: MOV DL, 0DH ;显示回车换行,即输出空行MOV AH, 2 ;显示一个字符的DOS调用INT 21HMOV DL, 0AHMOV AH, 2 ;显示一个字符的DOS调用INT 21HLOOP DISPPOP DXPOP CXRETSKIPLINES ENDPEND19.编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。

字符区首地址及其长度为变元。

参考答案:宏定义如下:CLRB MACRO N, CFILMOV CX, NCLDMOV AL, ‘’;;取空格符的ASCII码LEA DI, CFILREP STOSBENDM20.写出分配给下列中断类型号在中断向量表中的物理地址。

(1) INT 12H (2) INT 8参考答案:(1) 中断类型号12H在中断向量表中的物理地址为00048H、00049H、0004AH、0004BH;(2) 中断类型号8在中断向量表中的物理地址为00020H、00021H、00022H、00023H。

21.用CALL指令来模拟实现INT 21H显示字符T的功能。

参考答案:MOV AH, 2MOV DL, ‘T’PUSH DSPUSHF ;因中断服务程序的返回指令是IRET,而不是RETMOV BX, 0MOV DS, BXCALL DWORD PTR[21H*4] ;用CALL指令调用21H的中断服务程序POP DS22.写出指令将一个字数据从端口1000H输入。

参考答案:指令为: MOV DX, 1000HIN AX, DX23.写出文件代号式磁盘存取操作的错误代码:(1) 非法文件代号 (2) 路径未发现 (3) 写保护磁盘参考答案:错误代码为:(1) 06 (2) 03 (4) 1924.8088/8086CPU的存储器采用分段方式管理,每个段最多可以有___ ___字节,全部存储空间可以分成____ __个这样大小且互相不重叠的段。

参考答案:64K 1625.已知[X-Y]补=7001H,[X+Y]补=0001H,则[2X]补= H。

参考答案:7002H。

相关文档
最新文档