当前位置:文档之家› 汇编语言顺序结构实验报告

汇编语言顺序结构实验报告

实验实验目的:1. 掌握顺序结构程序的基本设计方法;2. 掌握数据传送指令和算术运算指令的用法;3. 掌握逻辑操作指令和移位操作指令的用法;4. 掌握状态标志位操作指令的用法;5. 掌握简单的I/O 功能调用。

实验要求1. 熟练掌握DEBUGS的U,D,E,G命令的使用方法;2. 学会利用系统功能调用,来实现键盘输入字符、显示字符的方法;3. 了解大、小写字母及数字在计算机中的表示方法及转换方法。

实验容题目SUM单元编写十六进制的乘法程序。

要求从键盘上输入两个一位十六进制数据,乘积存入以下是我的汇编程序代码:DSEG SEGMENTSUM DW ?HTAB DB '0123456789???????ABCDEF'HTAA DB '0123456789ABCDEF'DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV AH,01HINT 21HMOV DL,'*'MOV AH,02HINT 21HSUB AL,30H LEA BX,HTAB XLATMOV DL,ALMOV AH,01H INT 21H SUB AL,30H XLAT MOV BL,DL MUL BLMOV SUM,AXMOV BL,ALMOV CL,ALMOV DL,'=' MOV AH,02H INT 21H SHR BL,4 MOV AL,BL LEABX,HTAA XLAT MOV DL,BL MOV AH,02H INT 21H AND CL,0FHMOV AL,CL XLAT MOV DL,AL MOV AH,02H INT 21H MOV DL,'H'MOV AH,02H INT 21HMOV AH,4CHINT 21H CSEG ENDSEND START结果该程序不仅将结果存入了sum且显示在了屏幕上,经测试无溢出。

调试,改错在执行INT 21H 指令后,AL 寄存器中的容被改变,于是我将 AL 用DL 保存起来后重新 执行,发现仍然会显示乱码,进一步进行单步指令执行后,我发现 ,寄存器AL ,在转存过程中被我记成了 BL 。

经过修改终于完成。

严AH=fi23i BX=fl919 CK=1E04DH=flO3DftP-8000 BP=0000SI-0000 DJ-flP00DS=CB3CES=0B2CSS=0B3CCS=0B3PIP=B83FHU UP ITPL HZ HA PO CV1M 怕MC UDL,-PIX-0231CX=LE04 DX=-fl019 $P 吨盹BP^aaea SI ^-8003 DI ^-0000 PS-0B3C E8-0B2G SS "0B3G GS-6B3FIP-0041NU UP II PL NZ Nfl PO CY0B3F ;O041MO 他-PAX=023t =0019CK=£E04DX =0019£P=00O0BP=900851=0000DI=000QDS=«B3C EG=0B2CSS=MB3CCS=flB3FI P=0(i43MU UP 卫IPL HZ HA PO C¥SB3F :0043CD21 INT 211K=0233BK=00RfiDK =00KABP=0BHHSI DI =00fl (5ES=0B2C SS=0B3CC£=083FIF=B00DNU UP ElFL NZ NA PO NC-PI CD21INT21CK =0087 DX -QB2ABF-0000BI=0尅00 BI=00阳 &S=0B3CES-0B2C SS-0B3C CS=0B3F IP-009FNU UP El PL NZ NA PO NC:2C30SUE f 叽 30在实验过程中,有几个问题出现了, 首先,一开始在编写代码过程中,由于我没有给输入容表加逗号,导致数据溢出而使编译无法通过,经过修改后终于通过了编译。

但是之后结果一直都显示为同一个数字, 经过单步指令语言执行后, 我得到了以下的结果:开始我编写了一个利用转移指令完成的汇编程序,能够顺利将结果保存到 AX 和sumB3F :0P100 B3F :0003B3F=00B5B3F :0007B3F :00S9 S3F :W00H B3F :000D B3P-000F B3F :00L1 B3F=0013 B3F :00L5 B3F :0019 B3F :001A B3Fr001CB3F=001EB83C0BHEDR B401 CD218AE8 B22A B402 CD21 0fiC5 2C308D1E0200 D? 8AD0 B401 CD2inou NOU MOU INI MOV MOU MOU I NT noi SUB LEA KLAT HOU HOU INIB x l L AS H 06 @"s @A 2 0 C 3[ 严A F"b q JF尸>>X S H 1H L H 1L L X Dio AL AH,61 21a.a 2L J !T 5r TT 一4-^;r sr ff Tr Tr —19002 3 泅 0 9磁D7 B023 SABA 9025 FGE30027 M9000 1302 A 怡DE S02C »AES 财2E B23D0930 B40Z 0032 CD21 0034 Bl 94 mG I>2EB 083A BD1E17B0 0酣 E »?F 呂白DP0041 B402 00羽 CD21 盼15 S0E50F 朋4H BAC5 064A DV »fl4B SADQ 004D B402 004F CD210aSl B248胸盟B402 购55 CD21 0057 B401 0059 CD21 09&B 2301 005D 2E 005E 8S3G579X E A u L u u UU U T U E U A A U U L O U O O O O O N O H O E L O U I D U A U U IU m u I D --u O N N O L O O N O O N O N N S O BL,DL BL [WebAK BL.AL CH^L DL.3D AH,B2 21BX.18S1?]DL.AL21 CH,0F AL, CH1H 1L H 1H I XAL92 [BW+DI [9157],SIG^0开A =1EHX=01(JDBX=601^ CX-6E04 DM =0346 BP=0000 S1 =3000 DI =8090 iS^0B7C ES=0B2C SS-0E3G CS=0B3F IP^B05B NV UF El FL HZ : NA PO KC IB3F :O05B 2391 AND flX,tBX+EI] DS =0019=3130以及储存器的最终状态 以及存的最终状态,其中 0000为SUM 以3*A=1E 为例,sum 在第一个单元。

c c c cc c cIE 腼 37 BS 21 2C B4 D00 08c A 0 2 4 0 033D7 CD 02 01 泅 41 BE 2C 8A 21 CD 02 OB 42 D8 30 DA Bl 213C 34D 6408O 4B 8F 0844 01 IE E3 D2 E5 05—恥 0E-BF 45-4€ CD-21 02 -00 A3-00 EB-8A 0F-8A即 3B Q0 BA D7 色口 C3 C58108A A D 7 030E 000P920208E A030B D D 18 33 2ft B4 19 0&0D 1D A D030C 23B C ....................................... 01234E6 ?89ftBCDEF .......如下:SSEG SEGMENT STACK STK DB 20 DUP(0) SSEG ENDS DSEG SEGMENT SUM DW ? DSEG ENDS CSEG SEGMENTASSUME CS:CSEG,DS:DSEGASSUME SS:SSEG START:MOV AX,DSEGMOV DS,AXMOV AX,SSEGMOV SS,AXMOV SP,LENGTH STKMOV AH,01H INT 21H CMP AL,'A' JAE ABOVE1 SUB AL,'0' MOV BL,AL JMP NEXT1 ABOVE1: SUB AL,'A' ADD AL,10 MOV BL,AL NEXT1: MOV AH,01H INT 21H CMP AL,'A' JAE ABOVE2 SUB AL,'0' JMP NEXT2 ABOVE2: SUB AL,'A' ADD AL,10 NEXT2: MUL BLMOV SUM,AX MOV AH,4CH MOV AL,0 INT 21H CSEG ENDSEND START以下是反汇编容能够顺利将结果保存到 AX 和sum。

相关主题