8086程序设计仿真练习题

合集下载

模拟题带答案_汇编语言

模拟题带答案_汇编语言

一、填空题(每空2分,总30分)1、8086CPU由_段__地址和偏移地址得到__20__位的物理地址。

2、8086CPU有_8__个8位寄存器,_bx___、_si_、_di__、_bp___寄存器可以用来存放内存寻址时的偏移地址。

__ss__为堆栈段寄存器,__sp__寄存器为栈顶指针。

3、数值1234H存放在物理地址为4的字单元中,则物理地址4存储单元内容是_34H__,物理地址5存储单元内容是_12H___。

4、PSW状态标志寄存器ZF为__零__标志,当____运算结果为0时,ZF标志为1。

5、在堆栈操作中,如果10000H-1000FH为堆栈空间,则SS=____1000H,SP= ____0010H。

二、选择题(每题5分,总30分)1、下面堆栈指针寄存器是(B)A.IP B.SP C.BP D.PSW2、正确的指令是(B)。

A. ADD AX, [AX]B. MOV AX, [BX]C. MOV AX, [CX]D. MOV AX, [DX]3、下列属于合法的指令是( D )。

A. MOV DS,ES B.MOV CS,AXC. MOV AX,BLD. MOV AX,CS4、现有如下数据段:DA TA SEGMENTX1 DB 500 DUP(0,1)X3 DD ?DATA ENDS则X3-X1的值为(B)A. 500B. 1000C. 2D. 15、当执行指令ADD AX,BX后,若AX的内容为2BA0H,奇偶标志位PF=1,下面的叙述正确的是(A)A.表示结果中含1的个数为偶数B.表示结果中含1的个数为奇数C.表示该数为偶数D.表示该数为奇数6、RETF指令可描述为(C)。

A. POP IPB. POP CSC. 先A后BD. 先B后A三、判断题(对的填√,错的填×,共10分)1.ADD AH,1234H (×)2.MOV [DI],[SI] (×)3.ADD 1234H,AX (×)4.MOV CS, AX (×)5.MOV BX,AX (√)6.PUSH AL (×)7.POP CS (×)8.MOV CX,[AX] (×)9.MOV DS,1000H (×)10.CMP SS,AX (×)四、程序填空(每空2分,共10分)补全下面的程序,它的功能是利用堆栈实现数据逆序存放。

第4章 8086汇编语言程序格式习题

第4章 8086汇编语言程序格式习题

第4章汇编语言程序格式习题练习题1 单项选择题1.下列选项中不能作为名字项的是()。

A.FH B.A3 C.3B D.FA DC2.下列指令不正确的是()。

A.MOV A L,123 B.MOV A L,123QC.MOV A L,123D D.MOV AL,123H3.下列指令不正确的是()。

A.MOV BL,OFFSET A B.LEA BX,AC.MOV BX,OFFSET A D.MOV BX,A4.若定义“BUF DB 1,2,3,4”,执行MOV A L,TYPE BUF 后A L=()。

A.0 B.1 C.2 D.35.若定义“A EQU 100”,执行“MOV AX,A”后,AX=()。

A.A的偏移地址B.A单元中的内容C.100 D.A的段地址6.若定义“B DW 1,2,10 DUP(0)”,则该伪指令分配()字节单元。

A.10 B.20 C.22 D.247.若定义“C DD 2,4”,则该伪指令分配()个字节单元。

A.2 B.4 C.6 D.88、伪指令是()规定的汇编说明符,它在源程序汇编时进行说明。

A、DEBUGB、LINKC、MASMD、EDIT9.在上机操作过程中,MASM命令执行后,除了生成一个目标文件外,根据选择还可以生成一个()文件。

A..LST B..EXE C..MAP D..ASM10.LINK命令执行后可以生成一个以()为扩展名的文件。

A.ASM B.EXE C.OBJ D.COM11.一个段最大可定义()字节。

A.1M B.64K C.32K D.16K12.若要求一个段的起始位置能被256整除的单元开始,在定位方式选项中应选()。

A.BYTE B.WORD C.PA RA D.PA GE13.宏指令与子程序相比,在多次调用时,宏指令调用的目标程序长度比子程序调用的()。

A.相同B.长C.短D.不定14.宏指令与子程序相比,子程序调用的执行速度比宏指令的()。

《微机原理》第04章 习题

《微机原理》第04章 习题

习题1 习题
1.编写 编写8086汇编语言程序 , 将寄存器 的高 位传 汇编语言程序, 的高8位传 编写 汇编语言程序 将寄存器AX的高 送到寄存器BL, 位传送到寄存器DL 送到寄存器 ,低8位传送到寄存器 位传送到寄存器
习题2 习题
2.将寄存器 的内容从低到高位的顺序分成 组 , 将寄存器DX的内容从低到高位的顺序分成 将寄存器 的内容从低到高位的顺序分成4组 并将各组数分别送到寄存器AL,BL,CL和 DL( 如 并将各组数分别送到寄存器 和 ( DX=6D82H,分成:06H、0DH、08H、02H)。 ,分成: 、 、 、 )
MOV AX,MEN MOV BX,AX SHR AX,1 JC PO_1 MOV MEMB,BX JMP DONE PO_1: MOV MEMA,BX : DONE:
习题4 习题
4.试统计 个数中偶数的个数,并将结果在屏幕显示 试统计9个数中偶数的个数 试统计 个数中偶数的个数,
SI BUFF 3BH 47H 8DH -75 0A4H 69H -2EH 0CCH 200 0000H 0001H 0002H 0003H 0004H 0005H 0006H 0007H 0008H
逻辑左移
CF
0 1 XXX XXXX 0 XXX XXXX
SHL AL,1 ADC DL,0
ADC指令实现 指令实现DL+CF+0 指令实现 如果是负数, 为 , 个数记录加1 如果是负数,CF为1,则DL个数记录加 个数记录加
DATA SEGMENT BUFF DW 6700H,9E00H,-6A00H,0A0BH,6D00H NUM DB $-BUFF MEM DB ? DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA , START:MOV AX,DATA MOV DS,AX MOV CX,NUM LEA BX,BUFF

完整word版,MCS_8086习题7_答案(部分)

完整word版,MCS_8086习题7_答案(部分)

习题7答案1.请编写完整8086汇编语言程序统计0801~0803班计算机原理考试成绩:●假设成绩存放在数据段0000H开始的85个字节单元中;●将成绩从高到低进行排序;●统计最高成绩和最低成绩,分别存放在字节变量max和min单元中;●统计不及格人数,存放在字节变量var1中;●统计90~99分人数,存放在字节变量var2中;●计算85人平均成绩,存放在字节变量avg中;data segment paraorg 0056Hmax db 0min db 0var1 db 0var2 db 0avg db 0sum dw 0cnt equ 85data endsss_seg segment stackdw 100 dup(0)ss_seg endscode segment paraassume cs:code, ds:data, ss:ss_segmain proc farmov ax, datamov ds, axmov cx, cnt-1circle1: ; sort the scorepush cxmov bx, 0mov dx, 0circle2:mov al, [bx]cmp al, [bx + 1]jae nextxchg al, [bx + 1]mov [bx], almov dx, 1next:inc bxloop circle2pop cxcmp dx, 1jz main1loop circle1main1:mov max, [0000H] ; get the maxmov max, [0054H] ; get the minmov cx, cnt ; calculate var1, var2 and avgmov bx, 0circle3: mov al, [bx]mov ah, 0add sum, ax ; get the sum of scorecmp al, 90jae main2cmp al, 60jb main3jmp main4main2: inc var2 ; 90~99 numberjmp main4main3: inc var1 ; < 60 numbermain4: inc bxloop circle3mov dl, cntmov ax, sumdiv dlmov avg, al ; get the average scoremov ax, 4c00hint 21h ; return OSmain endpcode endsend main2 如图6-1所示,以IBM-PC/XT计算机为核心构成的炉温控制系统。

程序设计仿真练习题

程序设计仿真练习题

8086程序设计仿真练习题
1、数组STRAING中存放着多个8位有符号数,以“$”结束,要求
分成正数组和负数组分别存放,并统计两个数组的个数,分别存于正、负数组的第一个字节。

2、将数据块DAT1中的20个单字节数,复制到DAT2中,并从
中检索与2EH相同的数,将此单元的数换成空格符。

如有多个与2EH相同的数,要求统计出个数,存在寄存器DL中。

3、将变量VAR1中的16位二进制数取反,并统计原数中1的个数,
将个数存在变量VAR2中。

4、找出数据块DAT1中的15个8位有符号数中,最大的偶数和最
小的奇数,分别存在变量MAX和MIN中。

5、将变量VAR1中的16位二进制数,变成4个ASCⅡ码,存在VAR2
开始的4内存单元中。

6、将数据块DAT1中的多个8位有符号数,数据块以0结尾(数据块不包括0),按照从小到大的顺序排列
7、内存单元X中有一个8位有符号数,按下式计算Y值,并将Y值
存于其后的单元(注意数据的大小)。

编写完整的汇编语言程序。

⎪⎩
⎪⎨⎧>-=<+=0305000252x x x x x y 8、数组BUF1中有10个BCD 码,求出其累加和及平均值,分别存在变量SUM 和A VER 中。

9、数据块X 中有8个8位无符号数,分别为记为X1、X2、….. X8, 试计算Y=X1+X2+X3-X4-X5+X6-X7+X8的值,并存在内存中。

10、利用调用子程序的方法,将不大于9999的一个16位二进制数转换成十进制数,以组合BCD 码的形式存在2个内存单元中。

(完整版)华中科技大学80X86汇编语言程序设计试卷

(完整版)华中科技大学80X86汇编语言程序设计试卷

《汇编语言程序设计》网络学院模拟试卷一2004.4班级________________ 姓名______________ 学号______________ 成绩______一、改错题(10分,每题1分,在错误处划线,线下写上正确答案)1. SHR BH, 82. ADD [BX], –153. LEA POINT, BUF4. IN DX, 2005. PUSH DH6. MUL 257. XLAT BX, TAB8. REPNZ MOVSW9. MOV AX, 2[SI][DI] 10. MOV [BX], [SI]二、单选题(20分,每题1分)1.MOV指令的特点是________。

A.影响DF B.影响SF C.影响CF D.不影响标志位2.使用寄存器间接寻址方式访问堆栈中某变量时,要选用________寄存器。

A.BX B.BP C.SI D.SP3.8086标志寄存器中的三个控制标志是________。

A. IF、PF、SF B.DF、OF、CF C.DF、IF、TF D.TF、AF、IF 4.若有符号数运算的结果溢出,则置________为1。

A.OF B.CF C.SF D.IF5.若某存贮器操作数的偏移地址在SI中,访问该操作数应采用________寻址方式。

A.立即B.寄存器C.寄存器问址D.直接6.串操作指令中,目的串的逻辑地址应为________。

A.DS:[SI] B.DS:[DI] C.ES:[DI] D.ES:[SI] 7.不在本模块定义而在本模块中引用的符号称________符号。

A.公共B.局部C.自定义D.外部8.若(CL)= 4,(AX)=0FF0FH,执行语句“ROR AX,CL”后,(AX)=________。

A.0FFFFH B.0FFF0H C.0F0FFH D.0FFFH9.已知AL中存放着一个压缩BCD码,为实现AL减1操作,应选用________指令序列。

MCS_8086习题3

MCS_8086习题3

习题3:1. 编写程序段,将2个32位无符号数DAT1和DAT2相乘,结果保存在64位无符号数Result 中;2. 有2个4字节无符号数分别存放在扩展段2000H 和3000H 开始的单元中,低位在前,高位在后,将两数相加,结果存放在数据段2000H 开始的单元中,请编写程序段完成以上功能;3. 8086系统中,请说明下列指令的源操作数的寻址方式是什么?1)MOV AX, 1234H 2)MOV AX, [1234H] 3)MOV AX, [BX]4)MOV AX, 1234H[BX + SI] 5)MOVSB 6)IN AL, DX4. 请在下表中画出下列数据段以十六进制表示的各单元值(表格中每个单元表示一个字节),并写出变量var1, var2, var3的偏移地址和cnt 的值。

data SEGMENT para ORG 30Hvar1 DB -2, ‘A ’, 2 dup(‘23’) var2 DW -1 cnt EQU $-var1 var3 DW var2 data ENDS5. 以下程序实现将变量var 进行var*10+600的操作,并将计算结果保存在变量result 中,当程序执行到地址M5的时候,请在以下表格中画出当前堆栈指针的位置和堆栈里的内容(程序断点可以用标号,在堆栈中可用寄存器名代表保存的内容,SS 的内容不用指定,表格的每个单元表示一个字)。

(6分)低地址高地址0030Hdata segmentvar dw 1000result dd ?data endssseg segment stackdb 100 dup(?)sseg endscode segmentassume cs:code, ds:data, ss:ss_seg main proc farpush dsmov ax, 0push axmov ax, datamov ds, axmov ax, varM1: c all CaculateM2: d w 10M3: d w 600M4: l ea bx, resultmov [bx], axmov [bx+2], dxretmain endpCaculate procpush bpmov bp, sppush sipushbx 高地址低地址mov bx, [bp+2]mov si, cs:[bx]mul siM5: a dd ax, cs:2[bx]adc dx, 0add bx, 4mov [bp+2], bxpop bxpop sipop bpretCaculate endpcode endsend main6. 问答题1)若AL = 81H,则执行指令CBW后AH的内容为多少?2)若BL = BEH,执行下列指令序列,则每执行一步,BL和CF的值为多少?SHL BL, 1 ;BL = _7CH____, CF = _1_____MOV CL, 2SHR BL, CL ; BL = __1FH___, CF = _0_____OR BL, 80SAR BL, 1 ; BL = __2FH___, CF = ___1___ROR BL,CL ; BL = _CBH____, CF = ___1___INC CLRCL BL, CL BL = __5FH___, CF = _0_____3)什么是短跳转、近跳转、远跳转?4)若当前SP = 1000H,CS = B000H ,IP = 0100H,且当前FLAG = 2345H,则执行指令INT 21H以后,SP的值变为多少?堆栈段中6个存储单元0FFFH、0FFEH、0FFDH、0FFCH、0FFBH、0FFAH的值分别是多少?7. 请写出程序段实现下列功能例如:从160H端口读取1个字节MOV DX, 160HIN AL, DX1)将一个8位数20H写入到地址为20H的端口;2)若AL = 56H,BL = 57H,将这两个压缩格式BCD码相加并将结果保存到存储单元[2000H]中;3)求数据段偏移地址为1000H开始的一个字符串的长度,字符串以ASCII码0为结束符,长度要求包括结束符;(提示:初始化AL = 0CX = 0FFFFH,然后使用REPNZ SCASB命令,最后根据CX的值计算字符串长度)8. 请判断以下8086汇编指令是否正确,正确则在指令前打√,错误则打×( ) 1) MOV DS, 1000H ( ) 18) LEA [1000H], MSG( ) 2) MOV DX, 1000H ( ) 19) LDS ES, MSG( ) 3) MOV IP, AX ( ) 20) LES DX, MSG( ) 4) MOV [1000H], [SI] ( ) 21) ADD DS, 1000H( ) 5) PUSH [SI] ( ) 22) ADC DX, [DI]( ) 6) PUSH AL ( ) 23) SUB [BX], 1000H( ) 7) PUSH 200H ( ) 24) SUB [BX + BP], 1000H ( ) 8) POP CS ( ) 25) IMUL 100H( ) 9) POP AX ( ) 26) DIV word ptr 100H[BP] ( ) 10) XCHG AX, DS ( ) 27) AND BP, 1001H( ) 11) XCHG AX, 1000H[SI + DI] ( ) 28) SHL [BX], 1( ) 12) IN AX, [SI] ( ) 29) ROR AX, 4( ) 13) IN BL, 80H ( ) 30) RCL word ptr [BX], CL ( ) 14) IN AX, 160H ( ) 31) SAR dword ptr [BX], CL ( ) 15) IN AL, DX ( ) 32) MOVSW( ) 16) OUT AL, DX ( ) 33) REPNZ SCASB( ) 17) OUT 80H, AL ( ) 34) RETI。

微机原理与接口技术——基于8086和Proteus仿真 习题参考答案

微机原理与接口技术——基于8086和Proteus仿真 习题参考答案

第1章习题答案1.答:为了区别所使用的数制,一般用以下两种书写格式表示:①用括号将数字括起,后面加数制区分,数制用下标的形式给出;②用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。

例如:十六进制数可以表示成16或;十进制数可以表示成10或。

2.答:123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。

3.答:字长为8位的二进制数原码表示的最大值:127,最小值:-127;补码表示的最大值:127,最小值:-128。

字长为16位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最大值:32767,最小值:-32768。

4.答:(1)125D=0111 1101B=7DH(2) 255D=1111 1111B=FFH(3)72D=0100 1000B=48H(4)5090D=0001 0011 1110 0010B=13E2H5.答:(1)1111 0000B=240D=F0H(2) 1000 0000 B =128D =80H(3)1111 1111 B =255 D =FFH(4)0101 0101B=85D=55H6.答:(1)FFH=255D=1111 1111B(2) ABCDH=43947D=1010 1011 1100 1101B(3) 123H=291D=0000 0001 0010 0011B(4) FFFFH=65535D=1111 1111 1111 1111B7.答:(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000;(2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;(3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000;(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000;(5) 8位时(127)原=0111 1111; (127)补=0111 1111;16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111;(6) 8位时-128超过原码表示的范围; (-128)补=1000 0000;16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001;(8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111;8.答:(1) [x]补=1100 0010;(2)[-x]补=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。

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

8086程序设计仿真练习题1、数组STRAING中存放着多个8位有符号数,以“$”结束,要求分成正数组和负数组分别存放,并统计两个数组的个数,分别存于正、负数组的第一个字节。

DATA SEGMENTDA1 DB 25H,0BDH,7FH,94H,65H,88H,12H,58H,99H,0A5H,99H,23H,0FBH,0AAH,098H,66H,'$'DA2 DB LENGTH DA1 DUP(?) ;正数DA3 DB LENGTH DA1 DUP(?) ;负数DATA ENDSCODE SEGMENTASSUME CS:CODE, DS: DATA,ES:DATASTART: MOV AX , DATAMOV DS, AXMOV ES, AXLEA SI, DA1LEA DI, DA2INC DILEA BX, DA3INC BXXOR DX,DXLOP1: LODSBCMP AL, '$'JZ NUMTEST AL,80HJNZ LOP2STOSBINC DLJMP LOP1LOP2: XCHG BX, DISTOSBINC DHXCHG BX,DIJMP LOP1NUM: LEA DI, DA2MOV [DI], DLLEA BX, DA3MOV [BX], DHHLTCODE ENDSEND START2、将数据块DAT1中的20个单字节数,复制到DAT2中,并从中检索与2EH相同的数,将此单元的数换成空格符。

如有多个与2EH相同的数,要求统计出个数,存在寄存器DL中。

DATA SEGMENTDAT1 DB 25H,0BDH,7FH,94H,2EH,65H,88H,12H,2EH,99H,0A5H,98H,2EH,23H,0FBH,0AAH,96H,66H,0CCH,08HDAT2 DB 20 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS: DATA,ES:DATASTART: MOV AX, DATAMOV DS, AXMOV ES, AXMOV CX, 20MOV DX, 0MOV BX,0LEA SI, DAT1LEA DI, DAT2CLDLP1: LODSBCMP CX, 0JZ LP2STOSBDEC CXJMP LP1LP2: CMP BX,20JZ OVERCMP DAT2[BX],2EHJZ LP3INC BXJMP LP2LP3: MOV DAT2[BX],' 'INC BXINC DLJMP LP2OVER: HLTCODE ENDSEND START3、将变量VAR1中的16位二进制数取反,并统计原数中1的个数,将个数存在变量VAR2中。

DATA SEGMENTVAR1 DW 1107HVAR2 DB 1 DUP(0)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AX,VAR1NOT AXMOV VAR1,AXXOR DL,DLMOV CX,16P1: ROL AX, 1JC P2INC DLMOV VAR2,DLP2: LOOP P1HLTCODE ENDSEND START4、找出数据块DAT1中的15个8位有符号数中,最大的偶数和最小的奇数,分别存在变量MAX和MIN中。

DA TA SEGMENTDA T1 DB 12H,86H,53H,76H,66H,96H,09H,25H,37H,48H,06H,88H,0FFH,0ABH,0DDH,5 DUP(0)MAX DB 1 DUP(0)MIN DB 1 DUP(0)DA TA ENDSCODE SEGMENTASSUME CS: CODE, DS:DATA ,SS:STACKSTART: MOV AX, DATAMOV DS, AXMOV BX, 0MOV CX, 15DEC CX ;内循环LOP1: MOV DX, CX ;外循环LOP2: MOV AL, DA T1[BX]CMP AL, DA T1[BX+1]JL LP1XCHG AL, DA T1[BX+1]MOV DAT1[BX], ALLP1: ADD BX,1LOOP LOP2MOV CX,DXMOV BX,0LOOP LOP1MOV DI,14M1: TEST DAT1[DI],01HJNZ MMAXMOV AH,DA T1[DI]MOV DI,0JMP M2MMAX: DEC DIJMP M1M2: TEST DAT1[DI],01HJZ MMINMOV AL,DA T1[DI]JMP MMMMIN: INC DIJMP M2MM: MOV MAX,AHMOV MIN,ALHLTCODE ENDSEND START5、将变量VAR1中的16位二进制数,变成4个ASCⅡ码,存在VAR2开始的4内存单元中。

DATA SEGMENTVAR1 DW 110AHVAR2 DB 4 DUP('')DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,VAR1MOV BX,0LP1: MOV AX,DXAND AX,000FHCMP AL,0AHJB LP2ADD AL,07HLP2: ADD AL,30HMOV VAR2[BX],ALINC BXMOV CX,4SHR DX,CLCMP BX,4JZ OVERJMP LP1OVER: HLTCODE ENDSEND START6、将数据块DAT1中的多个8位有符号数,数据块以0结尾(数据块不包括0),按照从小到大的顺序排列,DA TA SEGMENTDA T1 DB 12H,84H,53H,76H,66H,99H,09H,25H,37H,48H,0,88HDA TA ENDSCODE SEGMENTASSUME CS: CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DI, 0NUM1: CMP DA T1[DI],0JZ LOP0INC DIJMP NUM1LOP0: MOV BX, 0MOV CX, DIDEC CX ;内循环LOP1: MOV DX, CX ;外循环LOP2: MOV AL, DA T1[BX]CMP AL, DA T1[BX+1]JL LP1XCHG AL, DA T1[BX+1]MOV DAT1[BX], ALLP1: ADD BX,1LOOP LOP2MOV CX,DXMOV BX,0LOOP LOP1HLTCODE ENDSEND START7、内存单元X 中有一个8位有符号数,按下式计算Y 值,并将Y 值存于其后的单元(注意数据的大小)。

编写完整的汇编语言程序。

⎪⎩⎪⎨⎧>-=<+=0305000252x x x x x y DATA SEGMENTX DB 81HY DW ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV AL,XMOV AH,0CMP X,0JL LOP1JG LOP3JMP LOP4LOP1: CMP AL,0F4H ;AL的数与-12比较JL LOP2SHL AX,1ADD AX,25MOV AH,0JMP LOP4LOP2: SHL AX,1ADD AX,25MOV AH,0FFHJMP LOP4LOP3: MOV BX,AXMOV CL,2SHL BX,CLADD AX,BXSUB AX,30LOP4: MOV Y,AXHLTCODE ENDSEND START8、数组BUF1中有10个BCD码,求出其累加和及平均值,分别存在变量SUM 和A VER中。

DATA SEGMENTBUF1 DB 37H,22H,08H,06H,66H,99H,88H,09H,13H,92HSUM DW 2 DUP(?)A VER DB 1 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE, DS : DATABEGIN: MOV AX,DATAMOV DS,AXLEA BX, BUF1LEA DI, SUMLEA SI, A VERMOV CX, 10XOR AX, AXLP1: ADD AL, [BX]DAAJNC M1INC AHM1: INC BXLOOP LP1MOV [DI], ALMOV [DI+1] ,AHMOV BX, 10HDIV BXMOV [SI], AXHLTCODE ENDSEND BEGIN9、数据块X中有8个8位无符号数,分别为记为X1、X2、….. X8, 试计算Y=X1+X2+X3-X4-X5+X6-X7+X8的值,并存在内存中。

DATA SEGMENTX DB 0A5H,0BDH,7FH,69H,2EH,65H,99H,12HY DB 2 DUP('')DATA ENDSCODE SEGMENTASSUME CS:CODE, DS: DATASTART: MOV AX, DATAMOV DS, AXMOV AX,0MOV AL,X[0]ADD AL,X[1]ADC AH,0ADD AL,X[2]ADC AH,0SUB AL,X[3]SBB AH,0SUB AL,X[4]SBB AH,0ADD AL,X[5]ADC AH,0SUB AL,X[6]SBB AH,0ADD AL,X[7]ADC AH,0MOV Y[0],ALMOV Y[1],AHHLTCODE ENDSEND START。

相关文档
最新文档